JP7051887B2 - 非2値コンテキスト・ミキシング方法、非2値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム - Google Patents

非2値コンテキスト・ミキシング方法、非2値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム Download PDF

Info

Publication number
JP7051887B2
JP7051887B2 JP2019547518A JP2019547518A JP7051887B2 JP 7051887 B2 JP7051887 B2 JP 7051887B2 JP 2019547518 A JP2019547518 A JP 2019547518A JP 2019547518 A JP2019547518 A JP 2019547518A JP 7051887 B2 JP7051887 B2 JP 7051887B2
Authority
JP
Japan
Prior art keywords
data
block
page
classifier
data storage
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
JP2019547518A
Other languages
English (en)
Other versions
JP2020510931A (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.)
International Business Machines Corp
Original Assignee
International Business Machines 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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of JP2020510931A publication Critical patent/JP2020510931A/ja
Application granted granted Critical
Publication of JP7051887B2 publication Critical patent/JP7051887B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0608Saving storage space on storage systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0613Improving I/O performance in relation to throughput
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices
    • G06F3/0688Non-volatile semiconductor memory arrays
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/08Computing arrangements based on specific mathematical models using chaos models or non-linear system models
    • 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/3079Context modeling
    • 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/4006Conversion to or from arithmetic code
    • H03M7/4012Binary arithmetic codes
    • H03M7/4018Context adapative binary arithmetic codes [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/046Forward inferencing; Production systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Artificial Intelligence (AREA)
  • Computational Linguistics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Medical Informatics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Nonlinear Science (AREA)
  • Algebra (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Stored Programmes (AREA)

Description

本開示は、データの処理および記憶に関し、さらに詳細には、フラッシュ・メモリ・システムなどのデータ・ストレージ・システムに非2値コンテキスト・ミキシング(context mixing)圧縮器(compressor)/圧縮解除器(decompressor)を実装することに関する。
NAND型フラッシュ・メモリは、トランジスタまたは同様の電荷トラップ構造の浮遊ゲート上の電荷としてメモリ・セルごとに1ビットまたは複数ビットのデータを記憶する電気的にプログラム可能および消去可能な不揮発性メモリ技術である。代表的な実装形態では、NAND型フラッシュ・メモリ・アレイは、ブロック(「消去ブロック」とも呼ばれる)単位の物理メモリで構成され、各ブロックは、複数のメモリ・セルをそれぞれ含む複数の物理ページを含む。メモリ・セルにアクセスするために利用されるワード線およびビット線の構成により、フラッシュ・メモリ・アレイは、一般に、プログラムはページごとに行うことができるが、消去はブロックごとに行われる。
当技術分野で既知の通り、NAND型フラッシュ・メモリのブロックは、新たなデータでプログラムする前に消去しなければならない。NAND型フラッシュ・メモリのブロックは、選択したブロックのpウェル・バルク領域に高い正の消去電圧パルスを印加し、消去対象のメモリ・セルの全てのワード線に接地電位のバイアスをかけることによって、消去される。消去パルスを印加することにより、接地電位にバイアスされたメモリ・セルの浮遊ゲートからの電子のトンネル効果を促進して、それらの浮遊ゲートに正味の正電荷を与えることにより、それらのメモリ・セルの電圧しきい値を消去状態に向かって移行させる。一般には、各消去パルスに続いて、消去ブロックを読み取って、例えば消去できなかった消去ブロック中のメモリ・セルの数がしきい値数未満であることを検証することなどにより消去動作が成功したかどうかを判定する消去検証動作を行う。一般には、消去検証動作が成功するまで、または所定数の消去パルスを使用する(すなわち消去パルス予定数を使い果たす)まで、消去パルスを消去ブロックに印加し続ける。
NAND型フラッシュ・メモリ・セルは、プログラム対象のメモリ・セルのワード線に高い正のプログラム電圧を印加し、プログラミングを禁止する同じストリング内のメモリ・セルに中間パス電圧を印加することによって、プログラムすることができる。プログラム電圧を印加することによって、浮遊ゲートへの電子のトンネル効果を引き起こして、その浮遊ゲートの状態を、初期の消去状態から、正味の負電荷を有するプログラム状態に変化させる。プログラムに続いて、通常は、読取り検証動作でプログラム済みのページを読み取り、例えばビット・エラーを含むプログラム済みページ内のメモリ・セルの数がしきい値数未満であることを検証することなどにより、プログラム動作が成功したことを保証する。一般に、読取り検証動作が成功するまで、または所定数のプログラム・パルスを使用する(すなわちプログラム・パルス予定数を使い果たす)まで、プログラム動作および読取り検証動作は、ページに適用される。
PAQは、共同開発によって、圧縮率(CR)を測定するいくつかのベンチマークについて最上位ランクを有する一連の可逆的データ圧縮アーカイバを提供するものである。一般に、PAQの様々なバージョンで、コンテキスト・ミキシング・アルゴリズムを実施している。コンテキスト・ミキシングは、圧縮器/圧縮解除器を予測器と算術エンコーダ/デコーダとに分割するという点では、Prediction by Partial Matching(PPM)と関係があるが、異なるコンテキストを条件とする多数のモデルから得られる確率推定を重み付けして組み合わせたものを用いて次シンボル予測を計算するという点では異なる。PPMと異なり、PAQにおけるコンテキストは、連続していなくてもよい。
一般に、あらゆるバージョンのPAQは、モデルの詳細、および予測をどのように組み合わせて後処理するかという点では異なるが、一度に1ビットずつ予測して圧縮する。次のビットの確率を決定するときには、次のビットを算術符号化によって符号化する。PAQ1からPAQ3では、各予測は、重み付け加算によって組み合わされた1対のビット数として表され、コンテキストが長くなるほど、大きく重み付けされる。PAQ4からPAQ6では、予測は(PAQ1からPAQ3と同様に)組み合わされるが、各モデルに割り当てられる重みは、より精度の高いモデルを偏重するように調整される。PAQ7以降のバージョンのPAQでは、各モデルは、(1対のビット数ではなく)確率を出力し、それらのモデルの確率は、ニューラル・ネットワーク・ミキサを用いて組み合わされる。
残念ながら、コンテキスト・ミキシング圧縮アルゴリズムは、実装するコンテキスト・モデルが多数であること、ニューラル計算が複雑であること、および2値性を有することにより、ほぼ全ての既知の圧縮ベンチマークで最上位を占めるが、非常に低速になる傾向がある(例えば、PAQ8lアルゴリズムの帯域幅は、約20kB/sである)。
米国特許第8176284号 米国特許第8176360号 米国特許第8443136号 米国特許第8631273号
Mattern, C., "Mixing Strategies in Data Compression", in Data Compression Conference (DCC), 2012, pp.337-346
従って発明が解決しようとする課題は非2値コンテキスト・ミキシング圧縮器/圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラムを提供することである。
圧縮器における非2値コンテキスト・ミキシングの技術は、複数のコンテキスト・モデルが、符号化対象の次のシンボルの値に関するモデル予測を生成することを含む。ミキサは、これらのモデル予測から最終予測のセットを生成する。算術エンコーダは、受信入力シンボルおよび最終予測のセットに基づいて圧縮データを生成する。受信入力シンボルは、2を超えるサイズを有するアルファベットに属し、ミキサは、モデル予測から特徴行列を生成し、最終予測のセットを生成する分類器を訓練する。
別の実施形態によれば、分類器は、最大エントロピー分類器である。
さらに別の実施形態によれば、分類器は、確率的勾配降下法を用いて訓練される。
異なる実施形態によれば、分類器は、ミニ・バッチ勾配降下法を用いて訓練される。
さらに別の実施形態によれば、分類器は、雑音対照推定(noise contrastive estimation)を用いて訓練される。
別の実施形態では、ミキサは、ニューラル・ネットワークである。
さらに別の実施形態では、分類器は、確率的勾配降下法を用いて訓練される最大エントロピー分類器である。
開示する技術は、方法、データ・ストレージ・システム、またはプログラム製品(ストレージ・デバイスに記憶されたプログラム・コードを含む)、あるいはそれらの組合せとして実施することができる。
1実施形態によるデータ処理環境を示すハイレベル・ブロック図である。 図1のデータ・ストレージ・システムの例示的なインタフェース・ノードを示す、より詳細なブロック図である。 図1のデータ・ストレージ・システムの例示的なフラッシュ・カードを示す、より詳細なブロック図である。 本開示によるNAND型フラッシュ・メモリ・システム内の物理メモリの例示的な構成を示す図である。 本開示によるNAND型フラッシュ・メモリ・システム内の物理メモリの例示的な構成を示す図である。 本開示によるNAND型フラッシュ・メモリ・システム内の物理メモリの例示的な構成を示す図である。 本開示によるNAND型フラッシュ・メモリ・システム内の物理メモリの例示的な構成を示す図である。 本開示によるブロック・ストライプの例示的な実施態様を示す図である。 本開示によるページ・ストライプの例示的な実施態様を示す図である。 本開示による各データ・ページに記憶される例示的なコードワードを示す図である。 本開示による各データ保護ページに記憶される例示的なコードワードを示す図である。 本開示の1実施形態によるフラッシュ制御装置によって利用されるフラッシュ管理機能およびデータ構造を示すハイレベル流れ図である。 本開示の1実施形態による例示的なフラッシュ制御装置を示す、より詳細な図である。 例示的な従来の圧縮器を示すブロック図である。 例示的な従来の圧縮解除器を示すブロック図である。 コンテキスト・ミキシングによって予測を実行する例示的な従来の予測器を示すブロック図である。 ロジスティック・ミキシングを実行する例示的な従来のミキサを示すブロック図である。 本開示の実施形態に従って構成された例示的な圧縮器を示すブロック図である。 本開示に従って構成された3つの異なる例示的なミキサ(すなわち実施形態「A」、「B」、および「C」)についてのそれぞれの数式を含む表を示す図である。 1つのアルファベットが4つの入力シンボル(すなわちK=4)を有する、図19の実施形態「A」の例示的なミキサを示すブロック図である。 本開示の1実施形態による、非2値コンテキスト・ミキシングを実施する例示的な圧縮プロセスを示すハイレベル論理流れ図である。 本開示の1実施形態による、非2値コンテキスト・ミキシングを実施する例示的な圧縮解除プロセスを示すハイレベル論理流れ図である。 本開示の別の実施形態による、非2値コンテキスト・ミキシングのためにコンテキスト・モデルを選択する例示的なプロセスを示すハイレベル論理流れ図である。
本開示の1つまたは複数の実施形態によれば、シンボル予測のミキシングを実行して学習予測を生成する最大エントロピー・モデルまたはニューラル・ネットワークへの入力として分布するシンボル予測を作成するコンテキスト・モデルのアンサンブルを含む、非2値コンテキスト・ミキシング圧縮器/圧縮解除器アーキテクチャが開示される。本開示の1つまたは複数のその他の実施形態によれば、このアーキテクチャは、特定の顧客作業負荷についての(最大エントロピー・モデルまたはニューラル・ネットワーク・ミキサへの入力を提供するための)コンテキスト・モデルの最良のアンサンブルを学習するコンテキスト・モデル選択の技術と結合される。開示する圧縮技術は、インラインで(例えばフィールド・プログラマブル・ゲート・アレイ(FPGA)アクセラレーションを用いて)実施することもできるし、バックグラウンドで(例えばソフトウェアによって)実施することができる。開示する技術は、ニューラル・ネットワーク・ミキシングを用いたコンテキスト・モデリングに幅広く適用することができる。
図面、特に図1を参照すると、本明細書にさらに記載する不揮発性メモリ・アレイを有する、本開示によるデータ圧縮/圧縮解除を実行するように構成されたデータ・ストレージ・システム120を含む、例示的なデータ処理環境100を示すハイレベル・ブロック図が示してある。図示のように、データ処理環境100は、命令およびデータを処理する1つまたは複数のプロセッサ104を有するプロセッサ・システム102など、1つまたは複数のホストを含む。プロセッサ・システム102は、さらに、プログラム・コード、オペランド、またはプロセッサ104によって実行される処理の実行結果、あるいはそれらの組合せを記憶することができるローカル・ストレージ106(例えばダイナミック・ランダム・アクセス・メモリ(DRAM)またはディスクなど)を含むこともある。様々な実施形態では、プロセッサ・システム102は、例えば、モバイル・コンピューティング・デバイス(スマートフォンまたはタブレットなど)、ラップトップまたはデスクトップ型のパーソナル・コンピュータ・システム、サーバ・コンピュータ・システム(IBM社製のPOWER(R)シリーズのうちの1つなど)、あるいはメインフレーム・コンピュータ・システムである可能性がある。プロセッサ・システム102は、メモリ・キャッシュ、メモリ・コントローラ、ローカル・ストレージ、I/Oバス・ハブなどと組み合わせたARM(R)、POWER(R)、Intel X86(R)、またはその他の任意のプロセッサなどの様々なプロセッサを用いる、組込みプロセッサ・システムであってもよい。
各プロセッサ・システム102は、I/Oチャネル110を介してデータ・ストレージ・システム120に直接(すなわちいかなるデバイスも介在させずに)、または間接(すなわち少なくとも1つの中間デバイスを通して)に結合された入出力(I/O)アダプタ108をさらに含む。様々な実施形態において、I/Oチャネル110は、例えばファイバ・チャネル(FC)、FC over Ethernet(R)(FCoE)、アイスカジー(iSCSI)、インフィニバンド、伝送制御プロトコル/インターネット・プロトコル(TCP/IP)、PCIeなど、既知の、または将来開発される通信プロトコルのうちの任意の1つ、またはそれらの組合せを利用することができる。I/Oチャネル110を介して通信されるI/O動作(IOP)は、プロセッサ・システム102がデータ・ストレージ・システム120にデータを要求するための読取りIOP、およびプロセッサ・システム102がデータ・ストレージ・システム120へのデータの記憶を要求するための書込みIOPを含む。
図示の実施形態では、データ・ストレージ・システム120は、データ・ストレージ・システム120がI/Oチャネル110を介してIOPを受信してこれに応答するための複数のインタフェース・ノード122を含む。各インタフェース・ノード122は、耐故障性およびロード・バランシングを促進するために、複数のRAID制御装置124のそれぞれに結合されている。各RAID制御装置124は、この例ではNAND型フラッシュ・ストレージ媒体を含む複数のフラッシュ・カード126のそれぞれに(例えばPCIeバスによって)結合されている。
図2は、図1のデータ・ストレージ・システム120のインタフェース・ノード122を示す、より詳細なブロック図である。インタフェース・ノード122は、I/Oチャネル110を介してプロセッサ・システム102とのインタフェースとして機能し、ホスト側スイッチング・ファブリック112に接続する、1つまたは複数のインタフェース・カード111を含む。ホスト側スイッチング・ファブリック112は、スイッチとして作用し、インタフェース・カード111と、インタフェース・ノード112内の処理ユニット、すなわち制御プレーン汎用プロセッサ(GPP)113、データ・プレーンGPP116、およびデータ・プレーン・プロセッサ117との間の全てのデータ転送を処理する。通常は、ホスト側スイッチング・ファブリック112は、PCIeスイッチからなるが、他のスイッチ技術を使用することもできる。データ・プレーン・プロセッサ117は、例えば特定用途向け集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)によって実装することができる特殊目的プロセッサである。制御プレーンGPP113、データ・プレーンGPP116、およびデータ・プレーン・プロセッサ117は、全て、これらの構成要素間の共用メモリ、別個のメモリ、またはそれらの組合せとして実装することができるメモリ114に接続されている。
データ・プレーン・プロセッサ117は、フラッシュ・カード126に書き込む、またはフラッシュ・カード126から読み取る対象の受信データ・ページについてフィンガプリントを生成するフィンガプリント・エンジン118を実装する。データ・プレーン・プロセッサ117は、さらに、メモリ114に記憶されているフィンガプリント参照テーブル(LUT)115に、直接、またはデータ・プレーンGPP116または制御プレーンGPP113と通信することによって、アクセスすることができる。受信データ・ページについてのフィンガプリントは、ハッシュ、CRC、またはハッシュとCRCの組合せを含む可能性がある。フィンガプリント・エンジン118(またはデータ・プレーン・プロセッサ117内のその他の論理)は、受信データ・ページの圧縮ページ・サイズを決定するように構成することもできる。フィンガプリントLUT115は、フラッシュ・カード126に記憶されたデータ・ページについてのフィンガプリントを記憶する。フィンガプリントLUT115は、メモリ・サイズの制限があるので、任意の所与の時点で、フラッシュ・カード126に記憶されたデータ・ページの一部についてのフィンガプリントを記憶しているだけでよいことを理解されたい。
データ・プレーン・プロセッサ117がFPGAで実装される実施形態では、制御プレーンGPP113は、データ・ストレージ・システム120の起動中にデータ・プレーン・プロセッサ117をプログラムして構成することができる。データ・プレーンGPP116および制御プレーンGPP113は、データ・プレーン・プロセッサ117を制御するだけでなく、データ・プレーン・プロセッサ117の制御を介して間接に、またはディスク側スイッチング・ファブリック119を介して直接に、フラッシュ・カード126にアクセスする。制御プレーンGPP113は、システム管理機能、ならびにスナップショット、シン・プロビジョニング、および重複排除など、より高水準のサービスを実行する。データ・プレーンGPP116は、プロトコル固有機能を実行する。制御プレーンGPP113、データ・プレーンGPP116、およびデータ・プレーン・プロセッサ117は、ディスク側スイッチング・ファブリック119を介してRAID制御装置124に接続されている。ディスク側スイッチング・ファブリック119は、通常はPCIeスイッチからなるが、他のスイッチ技術を使用することもできる。図2は、さらに、制御プレーンGPP113およびデータ・プレーン・プロセッサ117が、フェイルオーバ・シナリオを扱うため、または他のデータ同期機能を実行するために、データ・ストレージ・システム120内の他のインタフェース・ノード122に接続されていることも示している。
図3は、図2のデータ・ストレージ・システム120のフラッシュ・カード126を示す、より詳細なブロック図である。フラッシュ・カード126は、フラッシュ・カード126とRAID制御装置124の間のインタフェースとして機能するゲートウェイ130を含む。ゲートウェイ130は、汎用プロセッサ(GPP)132に結合されており、このGPP132は、ゲートウェイ130が受信したIOPの前処理など様々な管理機能を実行する、またはフラッシュ・カード126によるIOPのサービスをスケジューリングする、あるいはその両方を行うように(例えばプログラム・コードによって)構成することができる。GPP132は、GPP132によって作成、参照、または修正、あるいはそれらの組合せが行われるデータを、その処理の途中で好都合にバッファすることができる、GPPメモリ134(例えばダイナミック・ランダム・アクセス・メモリ(DRAM)または磁気抵抗ランダム・アクセス・メモリ(MRAM))に結合されている。
ゲートウェイ130は、複数のフラッシュ制御装置140にさらに結合されており、各フラッシュ制御装置140は、それぞれのNAND型フラッシュ・メモリ・システム150を制御する。フラッシュ制御装置140は、例えば、関連するフラッシュ制御装置メモリ142(例えばDRAM)を有する特定用途向け集積回路(ASIC)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)によって実装することができる。フラッシュ制御装置140がFPGAで実装される実施形態では、GPP132は、データ・ストレージ・システム120の起動中にフラッシュ制御装置140をプログラムして構成することができる。起動後、一般動作中に、フラッシュ制御装置140は、ゲートウェイ130から、NAND型フラッシュ・メモリ・システム150に記憶されているデータを読み取る、またはNAND型フラッシュ・メモリ・システム150にデータを記憶する、あるいはその両方を行うことを要求する読取りIOPおよび書込みIOPを受け取る。フラッシュ制御装置140は、例えばNAND型フラッシュ・メモリ・システム150にアクセスして、要求されたデータをNAND型フラッシュ・メモリ・システム150から読み取る、またはNAND型フラッシュ・メモリ・システム150にデータに書き込むことによって、あるいはNAND型フラッシュ・メモリ・システム150と関連付けられた1つまたは複数の読取りキャッシュ、または書込みキャッシュ、あるいはその組合せ(これらは図3には図示せず)にアクセスすることによって、これらのIOPにサービスする。例えば、NAND型フラッシュ・メモリ・システム150は、データ・ページと、1つまたは複数のデータ・ページについてのフィンガプリント・メタデータ(MD)を提供する1つまたは複数のフィンガプリント・メタデータ・ページとの組合せを記憶することもある。代替の実施形態では、フィンガプリントMDは、データ・ページとは異なるメモリに記憶することもできる。
フラッシュ制御装置140は、論理/物理アドレス変換を行ってNAND型フラッシュ・メモリ・システム150内の特定のメモリ位置にアクセスすることを可能にするフラッシュ変換レイヤ(FTL)を実装する。一般に、プロセッサ・システム102などのホスト・デバイスからフラッシュ制御装置140が受け取るIOPは、そのデータがアクセス(読取りまたは書込み)される論理ブロック・アドレス(LBA)と、例えば書込みIOPである場合には、データ・ストレージ・システム120に書き込む対象の書込みデータとを含む。IOPは、アクセスするデータの量(またはサイズ)を指定することもできる。データ・ストレージ・システム120によってサポートされるプロトコルおよび機能によっては、他の情報を通信することもできる。当業者には既知の通り、NAND型フラッシュ・メモリ・システム150で利用されるようなNAND型フラッシュ・メモリは、読取りまたは書込みIOPがアクセスすることができるデータの最小単位が、フラッシュ・メモリ・ページ1ページ、例えば16キロバイト(kB)のサイズに固定されるように、その構造の制約を受ける。ホスト・デバイスによって提供されるLBAは、論理アドレス空間内の論理ページに対応し、この論理ページは、通常は4キロバイトのサイズを有する。したがって、物理フラッシュ・ページに複数の論理ページを記憶することができる。FTLは、このLBAを、NAND型フラッシュ・メモリ・システム150内の対応する物理位置に割り当てられた物理アドレスに変換する。
フラッシュ制御装置140は、アドレス変換を実行する、またはフラッシュ制御装置メモリ142に好都合に記憶することができる論理/物理アドレス変換(LPT)テーブルなどの論理/物理変換データ構造内の論理アドレスと物理アドレスの間のマッピングを記憶する、あるいはその両方を行うことができる。LPTテーブルは、NAND型フラッシュ・メモリ・システム150に記憶されたデータ・ページの圧縮ページ・サイズを記憶し、さらにそれらのCRC値も記憶するように構成することもできる。
NAND型フラッシュ・メモリ・システム150は、様々な実施形態において、多数の形態をとることができる。次に図4から図7を参照すると、1つの例示的な実施形態によるNAND型フラッシュ・メモリ・システム150内の1つの例示的な物理メモリ構成が示してある。
図4を参照すると、NAND型フラッシュ・メモリ・システム150は、32個の個別アドレス指定可能なNAND型フラッシュ・メモリ・ストレージ・デバイスで構成することができる。図示の例では、各フラッシュ・メモリ・ストレージ・デバイスM0aからM15bは、セルごとに2ビット以上のビットを記憶することができる基板実装型フラッシュ・メモリ・モジュールの形態をとる。したがって、フラッシュ・メモリ・モジュールは、シングル・レベル・セル(SLC)、マルチ・レベル・セル(MLC)、3レベル・セル(TLC)、またはクワッド・レベル・セル(Quad Level Cell)(QLC)で実装することができる。この32個のNAND型フラッシュ・メモリ・モジュールは、(M0a、M0b)から(M15a、M15b)まで、それぞれ2つのモジュールをまとめた16個のグループで構成される。物理アドレス指定方式では、NAND型フラッシュ・メモリ・システム150が16個のチャネルまたはレーン(Lane0からLane15)を含むように、2つのモジュールからなる各グループが、「チャネル」と呼ばれることもある「レーン」を形成する。
好ましい実施形態では、個々の各レーンは、そのレーンを関連するフラッシュ制御装置140に結合する関連するバスをそれぞれ有する。したがって、フラッシュ制御装置140は、その通信を特定の通信バスのうちの1つに向けることによって、その通信をメモリ・モジュールのレーンのうちの1つに向けることができる。所与のレーンの各通信バスは、他のレーンの通信バスから独立しているので、フラッシュ制御装置140は、同時に様々な通信バスを横切ってコマンドを発行し、データを送信または受信することができ、それによりフラッシュ制御装置140は、個々のレーンに対応するフラッシュ・メモリ・モジュールに、同時に、または極めて同時に近いタイミングで、アクセスすることができる。
図5を参照すると、図2のフラッシュ・メモリ・モジュールM0aからM15bのうちのいずれかを実装するために利用することができるフラッシュ・メモリ・モジュール300の例示的な実施形態が示してある。図5に示すように、フラッシュ・メモリ・モジュール300によって提供される物理記憶位置は、チップ・イネーブル(CE)によってアドレス指定、または識別、あるいはその両方を行うことができる複数の物理位置にさらに細分される。図5のレイでは、各フラッシュ・メモリ・チップ300の物理メモリは、4つのチップ・イネーブル(CE0、CE1、CE2、およびCE3)に分割され、各チップ・イネーブルは、フラッシュ制御装置140によってアサートされて対応するCE内の物理メモリ位置へのアクセス、またはそこからのアクセスを可能にする、それぞれのCE線を有する。各CEは、2つのプレーン(例えばPlane0およびPlane1)をそれぞれ有する複数のダイ(例えばDie0およびDie1)に細分される。各プレーンは、フラッシュ・メモリ・チップの物理レイアウト上、互いに物理的に関連付けられ、読取り動作および書込み動作など様々な動作の実行のために共通の回路(例えばI/Oバッファ)を利用する、ブロックの集合(後述)を表す。
図6から図7にさらに示すように、図3のフラッシュ・メモリ・モジュール300内の任意のプレーンを実装するために利用することができる例示的なプレーン400は、例えば、1024個または2048個の物理メモリ・ブロックを含む。なお、一部のブロックが早期に故障する可能性もあるので、製造業者がいくつかの追加のブロックをしばしば追加することに留意されたい。一般に、ブロックは、通常は物理的に互いに関連付けられた物理ページの集合である。この関連付けは、ブロックが、NAND型フラッシュ・メモリ・システム150内で消去することができる物理記憶位置の最小単位として定義されるようになっている。図7の実施形態では、各ブロック500は、例えば、256個または512個の物理ページを含み、ここで、物理ページは、読取りアクセスおよび書込みアクセスの個々にアドレス指定可能な最小データ単位として定義される。この例示的なシステムでは、データの各物理ページは、データ記憶用の共通容量(例えば16kB)に、以下でさらに詳細に述べるメタデータ用の追加の記憶域を加えた容量を有する。したがって、データは、ページ単位でNAND型フラッシュ・メモリ・システム150に書き込まれる、またはNAND型フラッシュ・メモリ・システム150から読み取られるが、ブロック単位で消去される。
NAND型フラッシュ・メモリ・システム150が、セルあたり複数ビットに対応するメモリ技術で実装される場合には、各ブロック500の複数の物理ページを、同じメモリ・セルのセットに実装することは、一般的である。例えば、図7に示すようにブロック500あたりの物理ページ数が512個であり、メモリ・セルあたり2ビットである(すなわち、NAND型フラッシュ・メモリ150がMLCメモリで実装される)と仮定すると、Page0からPage255(下位ページ)は、所与のメモリ・セルのセットの最初のビットを利用して実装することができ、Page256からPage511(上位ページ)は、同じ所与のメモリ・セルのセットの2番目のビットを利用して実装することができる。改ページと上位ページの実際の順序は、交互にすることもでき、製造業者によって決まる。多くの場合、ブロック500内のページの書換え耐性(endurance)はばらつきが大きく、いくつかの場合に、このばらつきは、下位ページ(一般に低い書換え耐性を有する可能性がある)と上位ページ(一般に高い書換え耐性を有する可能性がある)の間で特に顕著である。
図7にさらに示すように、各ブロック500は、そのブロック500内の各物理ページの状態をリタイア(retired)(すなわちユーザ・データの記憶に使用されなくなっている)または非リタイア(non-retired)(アクティブである、またはユーザ・データの記憶に依然として使用可能である)として示す、ブロック状態情報(BSI)502を含むことが好ましい。様々な実施態様で、BSI502は、ブロック500内で1つのデータ構造(例えばベクトルまたはテーブル)にまとめる、ブロック500内で(例えば各物理ページに負荷された1ビットまたは複数ビットのメタデータとして)分散させる、またはデータ・ストレージ・システム120内の他の場所に維持する、あるいはそれらを組み合わせて行うことができる。1つの例として、以下でさらに説明する図9に示す実施形態では、NAND型フラッシュ・メモリ・システム150内の全てのブロック500のページ状態情報が、例えばGPPメモリ134またはフラッシュ制御装置メモリ142に記憶されるページ状態テーブル(PST)946など、システム・レベルのデータ構造にまとめられる。
データ・ストレージ・システム120によって実装されるFTLは、ホスト・デバイスが利用できるようになっている論理アドレス空間を、NAND型フラッシュ・メモリ・システム150内の物理メモリから分離するので、NAND型フラッシュ・メモリ・システム150のサイズは、ホスト・デバイスに対して提供される論理アドレス空間のサイズと同じである必要はない。ほとんどの実施形態では、利用可能な物理メモリ全体より小さい論理アドレス空間を提供すること(すなわちNAND型フラッシュ・メモリ・システム150をオーバプロビジョニングすること)は有利である。このようなオーバプロビジョニングにより、上述のように特定量の無効データがあっても、論理アドレス空間が全て利用されているときに物理メモリ資源が利用可能になることが保証される。まだリクレイムされていない無効データの他に、メモリ障害、ならびに誤り訂正符号(ECC)、巡回冗長検査(CRC)、およびパリティなどのデータ保護方式の使用に伴うメモリ・オーバヘッドがあっても、オーバプロビジョニング空間を使用して、十分な論理空間が存在することを保証することができる。
いくつかの実施形態では、データは、一度に1物理ページずつ、NAND型フラッシュ・メモリ・システム150に書き込まれる。よりロバストなエラー回復が望ましい他の実施形態では、データは、本明細書で「ページ・ストライプ」と呼ぶ、NAND型フラッシュ・メモリ・システム150の関連する物理ページのグループに書き込まれる。開示する実施形態では、ページ・ストライプの全てのページを異なるレーンと関連付けて、高い書込み帯域幅を実現する。多くの実装形態では、最小の消去単位がブロックであるので、図8に示すように、複数のページ・ストライプを1つのブロック・ストライプにグループ化することができる。図8では、ブロック・ストライプ内の各ブロックが、異なるレーンと関連付けられている。ブロック・ストライプが構築されると、レーンの任意の空きブロックを選択することができるが、同じブロック・ストライプ内の全てのブロックは、同じ、または同様の健康度(health grade)を有することが好ましい。なお、ブロックの選択は、同じプレーン、同じダイ、または同じチップ・イネーブル、あるいはそれらの組合せから行われるようにさらに制限される可能性もあることに留意されたい。ブロック・ストライプの長さは、様々であってよく、また様々であることが好ましいが、NAND型フラッシュ・メモリ・システム150が16個のレーンを含む1実施形態では、各ブロック・ストライプが2個から16個のブロックを含み、各ブロックが異なるレーンに属する。様々な長さを有するブロック・ストライプの構造に関するさらなる詳細は、米国特許第8176284号、第8176360号、第8443136号、および第8631273号において見ることができ、それらは引用することによって、その全体が本明細書に組み込まれる。
各レーンのブロックが選択され、ブロック・ストライプが形成されたら、そのブロック・ストライプの全てのブロックの同じページ番号の物理ページで、ページ・ストライプを構成することが好ましい。NAND型フラッシュ・メモリ・システム150に記憶される様々なページ・ストライプの長さは様々である可能性があり、また様々であることが好ましいが、1実施形態では、各ページ・ストライプは、1個から15個のデータ・ページの書込みデータ(通常はホスト・デバイスから提供される)と、その書込みデータのためのデータ保護情報を記憶するために使用される1つの追加ページ(「データ保護ページ」)とを含む。例えば、図9は、N個のデータ・ページ(すなわちDpage00からDpageN-1)と、1つのデータ保護ページ(すなわちPpageN)とを含む例示的なページ・ストライプ610を示している。データ保護ページは、非リタイア・ページを含むページ・ストライプの任意のレーンに配置することができるが、通常は、メタデータ情報を最小限にするために、同じブロック・ストライプの全てのページ・ストライプについて同じレーンに配置される。例示したようにデータ保護ページを追加するには、同じブロック・ストライプの全てのページ・ストライプについて同時にガベージ・コレクションを行う必要がある。ブロック・ストライプのガベージ・コレクションが完了した後で、ブロック・ストライプをディゾルブ(dissolve)することができ、各ブロックを、以下で説明するように関連する使用準備完了(ready-to-use)(RTU)キューに配置することができる。ブロック・ストライプのページ・ストライプ内に配置されている論理データ・ページと同様に、フィンガプリントMDページも、そこに配置することができる。論理データ・ページおよびフィンガプリントMDページは、混合していてもよい。実際に、フラッシュ・カード126は、普通の論理データ・ページとフィンガプリントMDページとの間の違いを実際には知らないことがある。フィンガプリントMDページは、インタフェース・ノード122によって制御される専用メタデータ・ボリュームに記憶することができ、プロセッサ・システム102には見えないことがある。フラッシュ・カード126はボリュームについては全く知らないので、フィンガプリントMDページの動作は、普通の読取り動作および書込み動作として扱われる。
図10は、図9のページ・ストライプ610内の各データ・ページに記憶されるコードワードの例示的なフォーマットを示す図である。通常は、正の整数のコードワード、例えば2つまたは3つのコードワードが、各データ・ページに記憶されるが、代替の実施形態では、1つのデータ・ページに1つのコードワードを記憶することもある。この例では、各コードワード700は、データ・フィールド702と、データ・ページを記述するメタデータのための追加フィールドとを含む。コードワードのサイズに応じて、データ・フィールド702は、1つまたは複数の論理ページについてのデータを保持する。別の実施形態では、データ・フィールド702は、複数の論理データ・ページのデータの一部を保持することもある。図示の例では、メタデータ・フィールドは、コードワード700に記憶されたLBAを含むLBAフィールド704と、データ・フィールド702およびLBAフィールド704の組合せについて計算したCRC値を含むCRCフィールド706と、図示の例ではデータ・フィールド702、LBAフィールド704、およびCRCフィールド706の組合せから計算したECC値を含むECCフィールド708とを含む。データ・フィールド702が論理データ・ページの一部を保持する場合には、LBAフィールド704は、論理データ・ページのどの部分がデータ・フィールド702に記憶されているかについての情報をさらに保持する。
図11は、図9のページ・ストライプ610のデータ保護ページのコードワードの例示的なフォーマットを示す図である。1実施形態では、各データ保護ページは、正の整数のコードワードを記憶するが、代替の実施形態では、データ保護ページは、1つのコードワードしか記憶しないこともある。図示の例では、データ保護コードワード800は、ページ・ストライプ610内のコードワード700のデータ・フィールド702の内容のビットごとの排他的論理和(XOR)を含むデータXORフィールド802を含む。データ保護コードワード800は、ページ・ストライプ610内のコードワード700のLBAフィールド704のビットごとのXORをさらに含む。データ保護コードワード800は、最後に、データ保護コードワード800のCRC値およびECC値をそれぞれ記憶する、CRCフィールド806およびECCフィールド808を含む。このような保護方式は、パリティ・フィールドが常に1つの特定のフラッシュ・プレーン上に位置するわけではないので、一般にRAID5と呼ばれる。ただし、別法として、またはこれに加えて、リード・ソロモンなどの代替のデータ保護方式を使用することもできることを理解されたい。
上述のデータ・ページおよびデータ保護ページのフォーマットは、複数の異なるデータ保護機構を使用してページ・ストライプに記憶されたデータを保護するものである。第1に、データ・ページの各データ・コードワードでECCビットを使用することにより、フラッシュ・ページ内のコードワード内のいくつかのビット・エラーを訂正することが可能になる。使用するECC方法によっては、NAND型フラッシュ・ページ内の数百のビット、または数千のビットを補正することができることもある。ECC検査および訂正を実行した後で、訂正済みのCRCフィールドを使用して、訂正データを妥当性検査する。これら2つの機構をともに使用することにより、比較的良性のエラーの訂正が可能になり、ローカルのページ間情報のみを使用して、より深刻なエラーを検出することが可能になる。例えばデータ・ページを記憶するために使用される物理ページの障害によって、訂正不可能なエラーがデータ・ページで発生した場合には、障害が発生したデータ・ページのデータ・フィールドおよびLBAフィールドの内容を、ページ・ストライプのその他のデータ・ページおよびデータ保護ページから再構築することができる。
ページ・ストライプのデータ・ページおよびデータ保護ページが記憶される物理メモリ位置はNAND型フラッシュ・メモリ・システム150内で様々であるが、1実施形態では、所与のページ・ストライプを構成するデータ・ページおよびデータ保護ページは、データ・ストレージ・システム120全体の動作を最適化するように選択された物理メモリ位置に記憶されることが好ましい。例えば、1実施形態では、あるページ・ストライプを構成するデータ・ページおよびデータ保護ページは、それらのデータ・ページおよびデータ保護ページのそれぞれを記憶するために異なる物理レーンが利用されるように、記憶される。このような実施形態は、フラッシュ制御装置140が、そのページ・ストライプを構成する全てのデータ・ページに同時に、またはほぼ同時にアクセスすることができるので、効率的なページ・ストライプへのアクセスに対応している。なお、レーンへのページの割当ては、順番通りである必要はなく(すなわちデータ・ページは任意のレーンに任意の順序で記憶することができる)、ページ・ストライプが(例えば15個のデータ・ページおよび1つのデータ保護ページを含む)完全長ページ・ストライプでない限り、このページ・ストライプを記憶するために利用されるレーンは、隣接していなくてもよい。
データ・ストレージ・システム120の1つの例示的な実施形態の概略的な物理的構造および動作について説明したが、次に、図12を参照して、データ・ストレージ・システム120の特定の動作態様について説明する。図12は、1実施形態による、GPP132、またはフラッシュ制御装置140、あるいはその両方によって利用されるフラッシュ管理機能およびデータ構造を示すハイレベル流れ図である。
上述のように、データ・ストレージ・システム120は、一般的には、外部デバイスがNAND型フラッシュ・メモリ・システム150内の物理メモリ位置について、アドレス指定、またはアクセス、あるいはその両方を直接行うことを許さない。その代わりに、データ・ストレージ・システム120は、一般に、1つの連続した論理アドレス空間を外部デバイスに提供することにより、様々なLBAに関連するデータが実際にはNAND型フラッシュ・メモリ・システム150を構成する物理メモリ位置内のどこにあるかをフラッシュ制御装置140およびGPP132が制御することを可能にしながら、ホスト・デバイスが論理アドレス空間内のLBAからデータを読み取り、そこにデータを書き込むことを可能にする。このようにして、NAND型フラッシュ・メモリ・システム150の性能および態様寿命を、知的に管理および最適化することができる。図示の実施形態では、各フラッシュ制御装置140は、関連するフラッシュ制御装置メモリ142に記憶することができる論理/物理変換(LPT)テーブル900などの論理/物理変換データ構造を使用して、論理/物理変換を管理する。上述のように、LPTテーブル900などのLPTテーブルは、NAND型フラッシュ・メモリ・システム150に記憶されるデータ・ページの圧縮ページ・サイズを記憶して、データ複製を助けるように構成することもできる。
GPP132で実行されるフラッシュ管理コードは、例えばGPPメモリ134に記憶することができる、使用準備完了(RTU)キュー906内で使用する準備ができているNAND型フラッシュ・メモリ・システム150の消去ブロックを追跡する。図示の実施形態では、GPP132で実行される管理コードは、チャネルごとに1つまたは複数のRTUキュー906を維持することが好ましく、再使用される各消去ブロックの識別子は、そのチャネルに対応するRTUキュー906のうちの1つにエンキューされる。例えば、1実施形態では、RTUキュー906は、各チャネルについて、複数のブロック健康度のそれぞれについてそれぞれのRTUキュー906を含む。様々な実装形態では、レーンごとに2つから8つのRTUキュー906(および対応する数のブロック健康度)で十分であることが分かっている。
GPP132で実行されるフラッシュ管理コードによって実行されるブロック・ストライプ構築機能920は、RTUキュー906にエンキューされた消去ブロックからデータおよび関連するパリティ情報を記憶するための新たなブロック・ストライプを構築するものである。図8を参照して上述したように、ブロック・ストライプは、異なるチャネルに存在する同じまたは同様の健康度(すなわち予想される残りの有効寿命)を有するブロックで構成されることが好ましい。つまり、ブロック・ストライプ構築機能920は、異なるチャネルの対応するRTUキュー906から新たなブロック・ストライプの各ブロックを引き出すことによってブロック・ストライプを構築することができるので好都合である。その後、この新たなブロック・ストライプを、データ配置のためにフラッシュ制御装置140のキューに入れる。
プロセッサ・システム102などのホストから受信した書込みIOPに応答して、フラッシュ制御装置140のデータ配置機能910は、LPTテーブル900を参照することにより、書込み要求に示されている目標LBA(1つまたは複数)が現在NAND型フラッシュ・メモリ・システム150内の物理メモリページ(1つまたは複数)にマッピングされているかどうかを判定し、マッピングされている場合には、目標LBAに現在関連付けられている各データ・ページの状態を変更して、それが有効ではなくなっていることを示す。さらに、データ配置機能910は、必要な場合に、その書込みIOPの書込みデータ、およびその書込みIOPの対象となっている既存のページ・ストライプがあればそのページ・ストライプの任意の更新されていないデータ(すなわち、書込み要求が論理ページより小さい場合には、依然として、リード・モディファイ・ライトで扱う必要がある有効なデータがある)を記憶するためにページ・ストライプを割り当てる、またはその書込みIOPの書込みデータ、およびその書込みIOPの対象となっている既存のページ・ストライプがあればそのページ・ストライプの任意の更新されていない(すなわち依然として有効な)データを、空きスペースが残っている既に割り当てられているページ・ストライプに記憶する、あるいはその両方を行う。ページ・ストライプは、データを保持するために既に割り当てられているブロック・ストライプ、またはブロック・ストライプ構築機能920によって構築された新たなブロック・ストライプから割り当てることができる。好ましい実施形態では、ページ・ストライプの割当ては、割当てに利用可能なブロックの健康、および書込みデータのLBAの「熱」(すなわち推定または測定した書込みアクセス頻度)に基づいて行うことができる。次いで、データ配置機能910は、ページ・ストライプの各ページの各コードワードの書込みデータと、関連するメタデータ(例えばCRC値およびECC値)と、そのページ・ストライプのパリティ情報とを、割り当てられたページ・ストライプに書き込む。関連するメタデータおよびパリティ情報は、十分なホスト・データがページ・ストライプ内に配置されると直ちにストレージに書き込むことができる。フラッシュ制御装置140も、LPTテーブル900を更新して、書込みデータを記憶するために利用される物理ページ(1つまたは複数)を、ホスト・デバイスが示すLBA(1つまたは複数)と関連付ける。その後、フラッシュ制御装置140は、図12にさらに示すように、LPTテーブル900を参照することによって、そのデータにアクセスして、ホスト読取りIOPにサービスすることができる。
ブロック・ストライプの全てのページが書き込まれたら、フラッシュ制御装置140は、そのブロック・ストライプを、GPP132で実行されるフラッシュ管理コードがガベージ・コレクションを容易にするために利用する、使用中のブロック・キュー902のうちの1つに配置する。上述のように、書込みプロセス中には、ページは無効化されるので、NAND型フラッシュ・メモリ・システム150の一部分は、未使用になる。関連するフラッシュ制御装置140(またはGPP132、あるいはその両方)は、最終的に、ガベージ・コレクタ912によって実行されるガベージ・コレクションによって、このスペースをリクレイムする必要がある。ガベージ・コレクタ912は、例えばブロック・ストライプ内のブロックの健康、および消去ブロック内のデータのどれくらいが無効であるかなど、いくつかの要因に基づいて、特定のブロック・ストライプをガベージ・コレクション用に選択する。図示の例では、ガベージ・コレクションは、ブロック・ストライプ全体について実行され、GPP132で実行されるフラッシュ管理コードは、関連するフラッシュ制御装置メモリ142またはGPPメモリ134に好都合に実装することができる、再配置キュー904内でリサイクルの準備ができているブロック・ストライプのログをとる。
GPP132またはフラッシュ制御装置140によって実行されるフラッシュ管理機能は、再配置キュー904にエンキューされたブロック・ストライプに保持される依然として有効なデータを再配置する再配置機能914をさらに含む。このようなデータを再配置するために、再配置機能914は、データ配置機能910に再配置書き込み要求を発行して、古いブロック・ストライプのデータをNAND型フラッシュ・メモリ・システム150内の新たなブロック・ストライプに書き込むことを要求する。さらに、再配置機能914は、LPTテーブル900を更新して、データの論理アドレスと物理アドレスの現在の関連付けを除去する。依然として有効なデータが全て古いブロック・ストライプから移動したら、この古いブロック・ストライプを、ブロック・ストライプ・ディゾルブ機能916に渡す。ブロック・ストライプ・ディゾルブ機能916は、古いブロック・ストライプをその構成ブロックに分解することによって、それらのブロック同士を解離させる。次いで、フラッシュ制御装置140は、ディゾルブしたブロック・ストライプをそれまで形成していたブロックのそれぞれを消去し、P/Eサイクル・カウント944のそのブロックについての関連するプログラム/消去(P/E)サイクル・カウントを増分する。消去した各ブロックの健康メトリクスに基づいて、消去した各ブロックは、GPP132で実行されるフラッシュ管理機能の中のブロック・リタイア機能918によってリタイア状態になる(すなわちユーザ・データを記憶するために使用されなくなる)、またはそのブロックの識別子を関連するGPPメモリ134内の適当な使用準備完了(RTU)キュー906に入れることによって再利用に備えて準備される。
図12にさらに示すように、GPP132で実行されるフラッシュ管理機能は、バックグラウンド・ヘルス・チェッカ(background health checker)930を含む。バックグラウンド・ヘルス・チェッカ930は、プロセッサ・システム102などのホストの要求する読取りおよび書込みIOPから独立して動作するものであり、使用中のブロック・キュー902に記録されているブロック・ストライプに属するブロックについて、1つまたは複数のブロック健康メトリクス942を連続的に決定する。この1つまたは複数のブロック健康メトリクス942に基づいて、バックグラウンド・ヘルス・チェッカ930は、再配置機能914で扱われる再配置キュー904にブロック・ストライプを入れることができる。
次に図13を参照すると、1実施形態によるフラッシュ制御装置140を示す、より詳細な図が示してある。この実施形態では、フラッシュ制御装置140は、例えばブロックごとではなくページごとに、またはその両方を組み合わせて、NAND型フラッシュ・メモリ・システム150のフラッシュ・メモリ・モジュールM0a、M0b、M1a、M1b、…、M15a、およびM15bのメモリのリタイアをサポートするように(例えばハードウェア、ファームウェア、ソフトウェア、またはそれらの何らかの組合せによって)構成される。フラッシュ制御装置140は、さらに、メモリの物理ページをリタイアさせる一方で、そのリタイアさせた物理ページと共通の複数ビットメモリ・セルのセットを共有するその他の物理ページ(1つまたは複数)はアクティブに保つように構成することができる。
図示の実施形態では、フラッシュ制御装置140は、関連するNAND型フラッシュ・メモリ・システム150に書き込まれたデータに1つまたは複数のデータ圧縮アルゴリズムを選択的に適用する圧縮器1000と、NAND型フラッシュ・メモリ・システム150から読み取られた圧縮データを圧縮解除する圧縮解除器1002と、データ・スクランブラ1004とを含む。フラッシュ制御装置140は、また、インタフェース・ノード122のフィンガプリント・エンジン118と同様の任意選択のフィンガプリント・エンジン1006を含むこともある。フラッシュ制御装置140は、データ・スクランブラ1004を利用して、NAND型フラッシュ・メモリ150に書き込まれたデータに所定のデータ・スクランブル(すなわちランダム化)パターンを適用して、書換え耐性を改善し、セル間干渉を軽減する。
図13にさらに示すように、フラッシュ制御装置140は、書込みキャッシュ1010を含む。書込みキャッシュ1010は、NAND型フラッシュ・メモリ・システム150へのデータの書込みを予期してその書込みデータをバッファするための1つまたは複数のキャッシュ線1012のための記憶域を含む。図示の実施形態では、各キャッシュ線1012は、複数の(例えば16個の)セグメント1014aから1014pを含み、各セグメントは、最大16個のデータ・ページ(最大で15個のデータ・ページおよび1つのデータ保護ページ)からなるそれぞれのページ・ストライプのための記憶域を提供する。図示のように、実装を容易にするために、フラッシュ制御装置140は、キャッシュ線1012の所与のセグメント1014にバッファされた各ページを、16個のフラッシュ・メモリ・モジュールのそれぞれの対応するダイ索引、プレーン索引、および物理ページ索引に書き込むと好ましい。したがって、例えば、フラッシュ制御装置140は、セグメント1014aのデータ・ページを、フラッシュ・メモリ・モジュールM0aからM15aのそれぞれの最初の物理ページ(例えばPage23)に書き込み、セグメント1014bのデータ・ページを、フラッシュ・メモリ・モジュールM0aからM15aのそれぞれの2番目の物理ページに書き込み、セグメント1014pのデータ・ページを、フラッシュ・メモリ・モジュールM0aからM15aのそれぞれの16番目の物理ページに書き込む。
図14および図15を参照すると、適応符号化をそれぞれ実施する例示的な従来の圧縮器1100および例示的な従来の圧縮解除器1150が、ブロック図で示してある。なお、本開示に従って構成されたデータ・ストレージ・システムでは、従来の圧縮器1100が圧縮器1000で置換され、従来の圧縮解除器1150が圧縮解除器1002で置換されることを理解されたい。圧縮器1100および圧縮解除器1150は、それぞれ、全ての以前のシンボル(y(1)、y(2)、…、y(t-1))を検査して、次のシンボルy(t)の値に関する予測のセットPr(y(t))を作成する、予測器1102を含む。算術エンコーダ1104は、この予測のセットPr(y(t))および受信した入力シンボルに基づいて出力ストリームを作成する。ここで、各入力シンボルは、log[1/Pr(y(t))]ビットで表される。予測器1102による予測が良好である場合(すなわちPr(y(t))>1/Kである場合。ここで、「K」は、1つのアルファベット中のシンボルの数である)には、出力ストリームで圧縮が行われる。なお、この圧縮プロセスを正確に反転するためには、圧縮解除器1150の予測器1102によって作成される予測のセットPr(y(t))が、圧縮器1100の予測器1102によって作成される予測のセットと正確に同じでなければならないことを理解されたい。圧縮解除器1150の予測器1102の出力は、算術デコーダ1154に入力として提供され、算術デコーダ1154が、圧縮された入力ストリームを復号して、その入力に基づく圧縮解除シンボルを生成する。
図16を参照すると、コンテキスト・ミキシングによって予測を実行する例示的な従来の予測器1200が、ブロック図で示してある。予測器1200は、次のシンボルの値に関する予測をそれぞれ作成する「m」個の異なるモデルのアンサンブルと、全てのモデルからの予測を組み合わせて最終予測にするミキサ1204とを含む。ミキサ1204は、例えば、以下のようにモデル予測の平均をとることもある。
Pr(y(t)=k)=1/m*[p(y(t)=k)+p(y(t)=k)+…+p(y(t)=k)]
図17を参照すると、ロジスティック・ミキシングを実行する例示的な従来のミキサ1300が、ブロック図で示してある。ロジスティック・ミキシングは、確率的勾配降下法によって重みを最適化するロジスティック回帰と等価である。ただし、ロジスティック・ミキシングは、K=2についてのみ定義される。モデル予測p=p(y(t))から、特徴ベクトルx(t)は、以下のように計算される。
Figure 0007051887000001

重みベクトルθ=(θ、θ、…、θ)とすると、最終予測は、以下のように計算することができる。
Figure 0007051887000002
既知の通り、スカッシュ関数は、ニューラル・ネットワークで使用される一般的なロジスティック関数である。この場合、以下のように、圧縮を最大にするように、例えば確率的勾配降下法(SGD)を使用して重みベクトルを調節することができる。
Figure 0007051887000003

ここで、αは、勾配降下のステップの大きさのパラメータである。
本開示の様々な実施形態は、K>2のサイズのアルファベットに属するシンボルに対して動作する算術エンコーダ/デコーダを含む、非2値の最大エントロピーのコンテキスト・ミキシング圧縮器/圧縮解除器を対象としている。1つまたは複数の実施形態によれば、圧縮器/圧縮解除器は、符号化対象の次のシンボルの値に関する予測を作成するコンテキスト・モデル・アンサンブル(すなわち複数のコンテキスト・モデル)と、コンテキスト・モデル予測から特徴行列x(t)を作成して、最終予測を作成する最大エントロピー分類器を(例えば確率的勾配降下法(SGD)を用いて)訓練するミキサとを含む。ミキサによる最終予測は、算術エンコーダ/デコーダに入力として提供される。なお、最大エントロピー分類器に異なる数の制約を課すことにより(それにより異なる数のミキシング重みを生じることにより)、異なる実施形態を実施することができることを理解されたい。なお、SGD以外の訓練技術を使用して、分類器を訓練することもできることを理解されたい(例えば、ミニ・バッチ勾配降下法または雑音対照推定を使用して分類器を訓練することもできる)。一般に、唯一の制約は、圧縮器において予測Pr(y(t)|x(t))を形成するために使用される重みは、圧縮解除器でも全く同じ訓練を行うことができるように、シンボルy(1)、…、y(t-1)の知識を用いて訓練される、というものである。1つの例として、ニューラル・ネットワーク・ミキサは、最大エントロピー・ミキサを複数層にチェーニングすることによって構築することができる。
本開示の1つまたは複数の実施形態によれば、一般的なK>2についてのストレッチ関数を以下のように再定義する非2値最大エントロピー・コンテキスト・ミキシング圧縮器/圧縮解除器が開示される。
Figure 0007051887000004
なお、基礎となる概念は、(全てのシンボルの確率の合計が1になることから)モデルから生じる冗長情報を除去するということであることを理解されたい。また、必ずしもシンボル「K」で割る必要はない、すなわちシンボルが固定されているのであれば、どのようなシンボルで割ってもよいことも理解されたい。
この場合、一般化した特徴行列x(t)は、以下で与えられる。
Figure 0007051887000005

1つまたは複数の実施形態によれば、最大エントロピー・ミキサは、以下の形態をとることがある。
Figure 0007051887000006

ここで、fθ(k,x(t))は、この特徴行列の成分の何らかの1次結合であり、Zは、正規化定数と呼ばれるスカラーである。
図18を参照すると、図13の圧縮器1000がさらに詳細に示してある。図示のように、圧縮器1000は、その出力がニューラル・ネットワーク・ミキサ1400の入力に提供される、いくつかのコンテキスト・モデルを含む(図18には、そのうちの8個のみを示す)。学習予測が、ミキサ1400から算術エンコーダ1402に提供されて、入力シンボルからの圧縮データの生成を容易にしている。
図19を参照すると、テーブル1500は、本開示による、若干異なる制約下でエントロピーを最大にする3つの異なる実施形態、すなわち実施形態「A」、「B」、および「C」の数式を示している。実施形態「C」の予測器は、Matternによって導出された予測器と同じ機能的形態を有する(Mattern, C.,"Mixing Strategies in Data Compression", in Data Compression Conference (DCC), 2012, pp.337-346参照)。ただし、Matternの予測器では、重みθは、非ゼロであり、合計が1になる必要があった。それに対して、ここで開示する最大エントロピー・ミキサでは、重みθが、非ゼロであり、合計が1になる必要はない。実施形態「A」では、最小数の制約を課すので、最大数のミキシング重みが生じる。実施形態「A」は、モデルによって提供される全ての情報を使用して最終予測を形成するので、常に最高の圧縮率を提供するはずである。特に、実施形態「A」は、上記の参考文献でMatternによって定義されている圧縮器より高い圧縮比を実現することができる。
図20を参照すると、ミキサ1400が、K=4とした実施形態「A」の最大エントロピー・ミキサはとして実施されている。以下のように、学習しなければならない重みの総数は、3*3*m=9*mである。
Figure 0007051887000007
図示のように、ミキサ1400は、特徴行列x(t)を計算する特徴行列計算ブロックと、特徴行列要素と関連する重みとのドット積を算出する「K-1」個のドット積ブロックと、ドット積の結果についてe^(ドット積)を算出する「K-1」個の自然指数関数(Exp)ブロックと、正規化定数を計算し、次いで学習予測(Pr(y(t)))を作成するZ計算ブロックとを含む。K=2(すなわち1ビット・シンボル)についての256×1MBのサンプルのデータセットのシミュレーションでは、従来の2値コンテキスト・ミキシング圧縮を用いるシングル・コア・プロセッサで、1.38MB/sのスループットで8.04の圧縮率(CR)が得られた。同じデータセットについて、K=4(すなわち2ビット・シンボル)とした実施形態「C」のシミュレーションでは、2.11MB/sのスループットで8.11のCRが得られた。これは、従来の2値コンテキスト・ミキシング圧縮(すなわちK=2)の場合と比較して、約43パーセント速い圧縮に相当する。同じデータセットについて、K=4とした実施形態「A」のシミューレションでは、1.63MB/sのスループットで8.21のCRが得られた。これは、従来の2値コンテキスト・ミキシング圧縮と比較して約2パーセント高いCRに相当する。
図21を参照すると、本開示の実施形態によるデータ・ストレージ・システムの圧縮をデータ・ページに対して実行する例示的なプロセス1700が示してある。1つまたは複数の実施形態では、プロセス1700は、ブロック1701で、フラッシュ制御装置140の圧縮器1000によって、書込みIOP(例えばいくつかのシンボルを有する4kBデータ・ページ)が受信されたときに開始される。別の実施形態では、プロセス1700は、フラッシュ制御装置140の圧縮器1000によって、バックグラウンド圧縮要求に応答して開始されることもある。次に、判定ブロック1702で、フラッシュ制御装置140は、IOPがフラッシュ・カード126にデータ・ページを書き込む要求(すなわち書込みIOP)またはバックグラウンド圧縮要求に対応するかどうかを判定する。受信したIOPがデータ・ページ書込み要求またはバックグラウンド圧縮要求に対応しない場合には、その受信IOPに応答して、制御はブロック1702からブロック1714に移り、ブロック1714で、プロセス1700は終了する。受信したIOPがデータ・ページ書込み要求またはバックグラウンド圧縮要求に対応する場合には、その受信IOPに応答して、制御はブロック1704に移る。ブロック1704で、圧縮器1000は、符号化対象のデータ・ページの次のシンボルの値に関するモデル予測を生成する。次に、ブロック1706で、圧縮器1000は、それらのモデル予測の最終予測のセットを生成する。次いで、ブロック1708で、圧縮器1000は、受信入力シンボルおよび最終予測のセットに基づいて、圧縮データを生成する。次に、ブロック1710で、圧縮器1000は、モデル統計を更新し、ミキシング重みを調節する。次いで、判定ブロック1712で、圧縮器1000は、データ・ページが圧縮を必要とする別のシンボルを含むかどうかを判定する。データ・ページが圧縮を必要とする別のシンボルを含む場合には、それに応答して、制御はブロック1712からブロック1704に移る。データ・ページが圧縮を必要とする別のシンボルを含まない場合には、それに応答して、制御はブロック1712からブロック1714に移り、ブロック1714で、プロセス1700は終了する。
図22を参照すると、本開示の実施形態によるデータ・ストレージ・システムの圧縮解除をデータ・ページに対して実行する例示的なプロセス1800が示してある。1つまたは複数の実施形態では、プロセス1800は、ブロック1801で、フラッシュ制御装置140の圧縮解除器1002によって、読取りIOPが受信されたときに開始される。別の実施形態では、プロセス180は、フラッシュ制御装置140の圧縮解除器1002によって、バックグラウンド圧縮解除要求に応答して開始されることもある。次に、判定ブロック1802で、フラッシュ制御装置140は、IOPがフラッシュ・カード126からデータ・ページを読み取る要求(すなわち読取りIOP)またはバックグラウンド圧縮解除要求に対応するかどうかを判定する。受信したIOPがデータ・ページ読取り要求またはバックグラウンド圧縮解除要求に対応しない場合には、その受信IOPに応答して、制御はブロック1802からブロック1814に移り、ブロック1814で、プロセス1800は終了する。受信したIOPがデータ・ページ読取り要求またはバックグラウンド圧縮解除要求に対応する場合には、その受信IOPに応答して、制御はブロック1804に移る。ブロック1804で、圧縮解除器1002は、復号対象の次のシンボルの値に関するモデル予測を生成する。次に、ブロック1806で、圧縮解除器1002は、それらのモデル予測の最終予測のセットを生成する。次いで、ブロック1808で、圧縮解除器1002は、圧縮データおよび最終予測のセットに基づいて、受信入力シンボルを生成する。次に、ブロック1810で、圧縮解除器1002は、モデル統計を更新し、ミキシング重みを調節する。次いで、判定ブロック1812で、圧縮解除器1002は、データ・ページ中の別のシンボルが圧縮解除を必要としているかどうかを判定する。データ・ページ中の別のシンボルが圧縮解除を必要としている場合には、それに応答して、制御はブロック1812からブロック1804に移る。データ・ページ中の別のシンボルが圧縮解除を必要としていない場合には、それに応答して、制御はブロック1812からブロック1814に移り、ブロック1814で、プロセス1800は終了する。
一般に、PAQの新しいバージョン(例えばPAQ8以降)は、500を超える異なるコンテキスト・モデルの予測を混合して、比較的高い圧縮率を実現する。残念ながら、PAQ8アルゴリズムは、少なくとも部分的には、利用するコンテキスト・モデルが多数であるという理由から非常に低速である。一般に、PAQ8で使用SR得るコンテキスト・モデルのアンサンブルは、多くの異なるタイプのデータに対して高い圧縮を提供するように設計され、例えば画像、音声、テキストなど幅広いデータ・タイプ用に設計された多数の専用コンテキスト・モデルを含む。
データ・シンボルy(t)についての予測を行うために、各コンテキスト・モデルは、最初に、そのコンテキスト・モデルがそれまでに見たデータ・シンボル、すなわちシンボルy(1)、y(2)、…、y(t-1)に基づいて、Pビット・コンテキストを計算する。2つの例示的なコンテキスト関数に、以下のようなものがある。
CXT(y(1)、y(2)、…、y(t-1))=hash[y(t-4)、y(t-3)、y(t-2)、y(t-1)]∈[0,2-1]
CXT(y(1)、y(2)、…、y(t-1))=hash[y(t-7)、y(t-5)、y(t-3)、y(t-1)]∈[0,2-1]
上記に示すように、コンテキスト関数CXTおよびCXTは両方とも、特定のシンボルについてハッシュ関数を実行する。
典型的な実施態様では、Pビット・コンテキスト(CXT)は、「K」個のカウンタ、すなわちN(CXT)、N(CXT)、…、N(CXT)を取り出すことができる、メモリ内のアドレスを指している。N(CXT)、は、k番目のシンボルがコンテキスト内で観察された回数をカウントしたものである。この場合、データ・シンボルy(t)についての予測は、以下のように計算することができる。
Figure 0007051887000008
本開示の1つまたは複数の態様によれば、顧客作業負荷が通常は特定の種類のデータ(例えばフォーマット化されたデータベース・レコード)からなるということを考慮して、コンテキスト・モデル・アンサンブルの調整を容易にして、圧縮/圧縮解除の速度を上げる。本開示の1実施形態によれば、比較的小さなコンテキスト・モデル・アンサンブルを設計する反復型技術を実施する。この反復型技術は、比較的高い圧縮率(CR)を維持しながら、M個のコンテキスト・モデルの大きなセットをM’個の所望のコンテキスト・モデルのサブセットに縮小する(M’<M)。コンテキスト・モデル・アンサンブルのサイズを縮小するこうした技術は、オフラインで実施してもよいし、あるいは(例えばファームウェアで)バックグラウンド・プロセスとして実行して、コンテキスト・ミキシング圧縮器/圧縮解除器で使用されるコンテキスト・モデルのアンサンブルを様々な変化する顧客作業負荷に適応させることもできる。
一例として、圧縮器のためのコンテキスト・モデル選択の反復型プロセスは、「N」個の未選択のモデルおよび「0」個の選択済みモデルのセットから開始することがある。最初に、圧縮器を「N」回動作させ、その度に可能なモデルのうちの1つを起動し、どのモデルが最良の圧縮比(CR)を生じるかを判定する。次いで、最良のCRを生じるコンテキスト・モデルを、コンテキスト・モデルのアンサンブルまたはセットに含める。圧縮器を「N」回動作させた後は、「N-1」個の未選択のコンテキスト・モデルおよび1つの選択済みのコンテキスト・モデルのセットとなる。次いで、「N-1」個の残りのコンテキスト・モデルについて圧縮器を動作させ、(「N-1」個の残りのコンテキスト・モデル内の)どのコンテキスト・モデルが、選択済みのコンテキスト・モデルのセットに追加されたときに最高のCRを生じるかについて判定する。次いで、そのモデルをセットに追加する。所望数のモデルが特定されるまで、このプロセスを繰り返す。このプロセスは、例えば、フラッシュ・システム内でバックグラウンド・プロセスとして実行して、選択したコンテキスト・モデルを顧客作業負荷に適応させることもできる。一例として、8×1MBサンプルのデータセットを用いるシミュレーションでは、PAQ8lは、552個のコンテキスト・モデルを実施し、CRは9.00、スループットは0.02MB/sであった。これに対して、本明細書に記載する開示するコンテキスト・モデル縮小プロセスを8個のコンテキスト・モデルを有するデータセットについて実施すると、CRは8.36、スループットは2.11MB/sであった。コンテキスト・モデル・アンサンブルのサイズを552から8に減少させることで、CRはわずかしか低下させずに、スループットが劇的に高くなったことが理解されるであろう。
図23を参照すると、本開示の実施形態による、データ・ストレージ・システムでデータ圧縮/圧縮解除に使用される縮小コンテキスト・モデル・アンサンブルを顧客作業負荷に基づいて決定する例示的なプロセス1900が示してある。プロセス1900は、例えば、フラッシュ制御装置140によって実施することができる。プロセス1900は、ブロック1901で、フラッシュ制御装置140によってバックグラウンド・プロセスとして定期的に開始することができる。次に、判定ブロック1902で、フラッシュ制御装置140は、縮小コンテキスト・モデルが示されているかどうか、例えば新たな顧客作業負荷が開始されているかどうかを判定する。ブロック1902で、縮小コンテキスト・モデルが示されていない場合には、それに応答して、制御はブロック1924に移り、ブロック1924で、プロセス1900は終了する。ブロック1902で、縮小コンテキスト・モデルが示されている場合には、それに応答して、制御はブロック1904に移り、ブロック1904で、フラッシュ制御装置140が、(コンテキスト・モデルのアンサンブルを表す)セットSを初期化する。
次に、ブロック1906で、フラッシュ制御装置140は、ゼロに等しい変数「N」を設定する。なお、「N」は、現在のコンテキスト・モデルを表すことを理解されたい。一例で、「N」がゼロに等しい場合には、「コンテキスト・モデル0」が示される。別の例で、「N」が600に等しい場合には、「コンテキスト・モデル500」が示される。次いで、判定ブロック1908で、フラッシュ制御装置140は、コンテキスト・モデルNが既にセットS内にあるかどうかを判定する。セットSはブロック1904で初期化されているので、セットSは空であり、制御はブロック1908からブロック1914に移り、ブロック1914で、コンテキスト・モデルN(すなわちコンテキスト・モデル0)がセットS’に追加される。次に、ブロック1916で、フラッシュ制御装置140は、セットS’を用いて訓練データ(顧客作業負荷の代表サンプル)についての圧縮率(CR)を測定し、記録する。次いで、ブロック1910で、フラッシュ制御装置140は、「N」を1だけ増分する(すなわちN=N+1)。
次に、判定ブロック1912で、フラッシュ制御装置140は、「N」が「M」に等しいかどうかを判定する(ここで、「M」は、縮小していないコンテキスト・モデル・アンサンブル内のコンテキスト・モデルの総数に対応する)。ブロック1912で、「N」が「M」に等しくない場合には、それに応答して、制御はブロック1908に戻り、ブロック1908で、フラッシュ制御装置140は、コンテキスト・モデル「N+1」がセットS内にあるかどうかを判定する。プロセス1900は最近初期化されているので、コンテキスト・モデル「N+1」はセットS内にはなく、制御は、ブロック1908からブロック1914に移り、そこからブロック1916に移り、そこからブロック1910に移り、そこからブロック1912に移る。ブロック1912で、最終的に「N」が「M」に等しくなると、それに応答して、制御はブロック1918に移る。ブロック1918で、フラッシュ制御装置140は、セットS’内でCRの最大の増加をもたらす「N」(すなわちコンテキスト・モデルN)を特定し、CRの最大の増加をもたらすコンテキスト・モデルNをセットSに追加する。
ブロック1918から、制御は、判定ブロック1920に移る。ブロック1920で、フラッシュ制御装置140は、縮小コンテキスト・モデル・アンサンブルの所望のサイズに到達したかどうか(すなわち十分なコンテキスト・モデルがセットSに追加されたかどうか)を判定する。一例では、縮小コンテキスト・モデル・アンサンブルの所望のサイズは、所望の最小CRおよびスループットを実現することに基づいて決定することができる。ブロック1920で、縮小コンテキスト・モデル・アンサンブルの所望のサイズに到達していない場合には、それに応答して、制御はブロック1906に移り、もう一度反復して、別のコンテキスト・モデルをセットSに追加する。ブロック1920で、縮小コンテキスト・モデル・アンサンブルの所望のサイズに到達している場合には、それに応答して、制御はブロック1924に移り、ブロック1924で、プロセス1900は終了する。
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せであり得る。コンピュータ・プログラム製品は、本発明の様々な態様をプロセッサに実行させるコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体(1つまたは複数)を含み得る。
コンピュータ可読ストレージ媒体は、命令実行デバイスが使用する命令を保持および記憶することができる有形デバイスとすることもできる。コンピュータ可読ストレージ媒体は、これらに限定されるわけではないが、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、またはそれらの任意の適当な組合せである可能性がある。コンピュータ可読ストレージ媒体のさらに詳細な例を非排他的に挙げると、携帯可能コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ(RAM)、読取り専用メモリ(ROM)、消去可能プログラマブル読取り専用メモリ(EPROMまたはフラッシュ・メモリ)、静的ランダム・アクセス・メモリ(SRAM)、携帯可能コンパクト・ディスク読取り専用メモリ(CD-ROM)、デジタル汎用ディスク(DVD)、メモリ・スティック、フロッピー(R)・ディスク、命令が記録されたパンチカードまたは溝内の隆起構造などの機械符号化デバイス、およびそれらの任意の適当な組合せなどが挙げられる。本明細書で使用する「コンピュータ可読ストレージ媒体」は、電波またはその他の自由伝搬電磁波、導波路またはその他の伝送媒体中を伝搬する電磁波(例えば光ファイバ・ケーブルを通る光パルスなど)、あるいはワイヤ内を伝送される電気信号など、一過性の信号自体として解釈されないものとする。
本明細書に記載するコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング/処理デバイスにダウンロードすることもできるし、あるいは例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはそれらの組合せなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることもできる。ネットワークは、伝送銅線、伝送光ファイバ、ワイヤレス伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含む可能性がある。各コンピューティング/処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング/処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ(ISA)命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはSmalltalkもしくはC++などのオブジェクト指向プログラミング言語、または「C」プログラミング言語もしくはそれに類するプログラミング言語などの従来の手続き型プログラミング言語などの1つまたは複数のプログラミング言語で書かれたソース・コードまたはオブジェクト・コードのいずれかである可能性がある。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されることも、部分的にユーザのコンピュータ上で実行されることも、独立型ソフトウェア・パッケージとして実行されることも、部分的にユーザのコンピュータ上で実行され、部分的に遠隔コンピュータ上で実行されることも、あるいは完全に遠隔のコンピュータまたはサーバ上で実行されることもある。最後のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)または広域ネットワーク(WAN)など任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、この接続は、(例えばインターネット・サービス・プロバイダを用いてインターネットを介して)外部のコンピュータに対して行うこともできる。いくつかの実施形態では、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ(FPGA)、またはプログラマブル論理アレイ(PLA)などの電子回路が、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、本発明の様々な態様を実行することもある。
本発明の実施形態による方法、装置(システム)、およびコンピュータ・プログラム製品を示す流れ図またはブロック図、あるいはその両方を参照して、本発明の様々な態様について説明した。流れ図またはブロック図、あるいはその両方の各ブロック、および流れ図またはブロック図、あるいはその両方のブロックの様々な組合せは、コンピュータ可読プログラム命令によって実施することができることは理解されるであろう。
これらのコンピュータ可読プログラム命令は、それらの命令がコンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行されたときに流れ図またはブロック図、あるいはその両方の1つまたは複数のブロックに指定される機能/アクションを実施する手段を生成するように、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令を記憶しているコンピュータ可読ストレージ・デバイスが、流れ図またはブロック図、あるいはその両方の1つまたは複数のブロックに指定される機能/アクションの様々な態様を実施する命令を含む製品を構成するように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイス、あるいはそれらの組合せに特定のかたちで機能するように指示することができるものであってもよい。
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で実行された命令が、流れ図またはブロック図、あるいはその両方の1つまたは複数のブロックに指定される機能/アクションを実施するように、コンピュータ実施プロセスを作り出すべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、そのコンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
添付の図面の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示している。これに関連して、流れ図またはブロック図の各ブロックは、指定された論理機能(1つまたは複数)を実施するための1つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部分を表す可能性がある。いくつかの代替の実施態様では、ブロックに記載される機能は、図面に記載される以外の順序で発生することもある。例えば、連続して示されている2つのブロックが、実際には実質的に同時に実行されることもあり、あるいは、関係する機能によっては逆の順序で実行されることもある。また、ブロック図または流れ図、あるいはその両方の各ブロック、およびブロック図または流れ図、あるいはその両方のブロックの組合せは、特殊な機能またはアクションを実行する、あるいは特殊目的のハードウェアおよびコンピュータ命令の組合せを実行する特殊目的ハードウェア型システムによって実施することもできることに留意されたい。
上述のように、不揮発性メモリ・アレイの制御装置は、その不揮発性メモリ・アレイ内の物理ページをページごとにリタイアさせる。制御装置によってリタイアした物理ページは、第2の物理ページと共通のメモリ・セルのセットを共有する第1の物理ページを含む。第1の物理ページはリタイアするが、制御装置は、第2の物理ページをアクティブな物理ページとして保持し、ダミー・データを第1の物理ページに書き込み、ホストから受信したデータを第2の物理ページに書き込む。
1つまたは複数の好ましい実施形態を参照して、本発明を上述のように特に示したが、本発明の思想および範囲を逸脱することなく、形態および詳細の様々な変更を行うことができることは、当業者なら理解するであろう。例えば、特定の機能を支持するフラッシュ制御装置を含むデータ・ストレージ・システムに関連して様々な態様について説明したが、本発明は、あるいは、プロセッサによって処理されるとそれらの機能を実行することができる、またはそれらの機能を実行させることができるプログラム・コードを記憶するストレージ・デバイスを含むプログラム製品として実施されることもあることを理解されたい。本明細書で利用する「ストレージ・デバイス」は、特に、法定製品のみを含むものであり、伝送媒体自体、一過性の伝搬信号自体、および様々な形態のエネルギー自体は排除するものとして特に定義される。
さらに、NAND型フラッシュ・メモリの使用を含む実施形態について説明したが、本発明の実施形態は、例えば相変化メモリ(PCM)およびその組合せなど、その他のタイプの不揮発性ランダム・アクセス・メモリ(NVRAM)とともに使用することもできることを理解されたい。
上述した図面、ならびに具体的な構造および機能の書面による説明は、出願人等が発明した範囲、または添付の特許請求の範囲を限定するために与えたものではない。限定のためではなく、これらの図面および書面による説明は、特許保護が求められる発明を作成して使用することを当業者に教示するために提供したものである。当業者なら、明瞭性のために、また理解を促すために、これらの発明の商業的な実施形態の全ての特徴が記載または図示されているわけではないことを理解するであろう。また、当業者なら、本発明の態様を組み込む実際の商業的実施形態の開発では、その商業的実施形態についての開発者の最終的な目標を実現するための多数の実施態様に特有の判断が必要になることも理解するであろう。このような実施態様に特有の判断は、これらに限定されない可能性が高いが、個々の実施態様によって、位置によって、またはその時々で変化する可能性がある、システム関連、ビジネス関連、および政府関連などの制約への準拠を含むことがある。開発者の努力は、絶対的な意味で複雑で時間がかかるものになる可能性があるが、それでも、そのような努力は、本開示の利益を有する当業者にとっては日常的なものであろう。本明細書に開示および教示する発明は、多数の様々な修正形態および代替形態の余地があることを理解されたい。最後に、これに限定されるわけではないが「1つ(a)」などの単数形の用語を使用していても、それは、その項目の数を限定することを意図したものではない。

Claims (16)

  1. データ・ストレージ・システムの不揮発性メモリのコントローラにおいて、圧縮器における非2値コンテキスト・ミキシングを行う方法であって、
    前記コントローラが、複数のコンテキスト・モデルから、符号化対象の次のシンボルの値に関するモデル予測を生成するステップであって、前記コンテキスト・モデルは、前記データ・ストレージ・システムの現在の作業負荷に基づいて選択される縮小されたコンテキスト・モデル・アンサンブルに対応する、ステップと、
    前記コントローラが、ミキサを利用して、前記モデル予測から最終予測のセットを生成するステップであって、前記最終予測のセットを生成することは、前記モデル予測から特徴行列を生成することと、前記ミキサによって学習された分類器を利用して前記最終予測のセットを選択するステップを含む、ステップと、
    前記コントローラが、算術エンコーダを利用して、受信入力シンボルおよび前記最終予測のセットに基づいて、現在の作業負荷に対する圧縮時間を短縮し、スループットを向上させる圧縮データを生成するステップであって、前記受信入力シンボルは、2より大きいサイズを有するアルファベットに属する、ステップと、
    前記コントローラが、前記圧縮データを前記不揮発性メモリに記憶するステップと、
    前記コントローラが、非2値コンテキスト・ミキシング圧縮器を利用して、前記不揮発性メモリ内の圧縮データから前記受信入力シンボルを取得するステップ、を含む、方法。
  2. 前記分類器が、最大エントロピー分類器である、請求項1に記載の方法。
  3. 前記分類器が、確率的勾配降下法を用いて訓練される、請求項1に記載の方法。
  4. 前記分類器が、ミニ・バッチ勾配降下法を用いて訓練される、請求項1に記載の方法。
  5. 前記分類器が、雑音対照推定を用いて訓練される、請求項1に記載の方法。
  6. 前記ミキサが、ニューラル・ネットワークである、請求項1に記載の方法。
  7. 前記分類器が、確率的勾配降下法を用いて訓練される最大エントロピー分類器である、請求項1に記載の方法。
  8. データ・ストレージ・システムであって前記データ・ストレージ・システムが不揮発性メモリ用のコントローラを含み、該コントローラが、
    非2値コンテキスト・ミキシング・圧縮器であって、該圧縮器符号化対象の次のシンボルの値に関する第1のモデル予測を生成するように構成された第1の複数のコンテキスト・モデルであって、前記第1の複数のコンテキスト・モデルは、前記データ・ストレージ・システムの現在の作業負荷に基づいて選択された縮小されたコンテキスト・モデル・アンサンブルに対応する、第1の複数のコンテキスト・モデルと前記第1のモデル予測から第1の最終予測のセットを生成するように構成された第1のミキサであって、前記ミキサは、前記第1のモデル予測から特徴行列を生成し、前記ミキサによって学習された分類器を利用して前記第1の最終予測のセットを選択することによって、前記第1の最終予測のセットを生成する、第1のミキサと受信入力シンボルと前記第1の最終予測のセットに基づいて、現在の作業負荷に対する圧縮時間を短縮し、スループットを向上させる圧縮データを生成するように構成された算術エンコーダであって、前記受信入力シンボルは、2以上のサイズを有するアルファベットに属している、算術エンコーダと、を備え、
    前記算術エンコーダによって生成された前記圧縮データを前記不揮発性メモリに記憶する手段と、
    非2値コンテキスト・ミキシング圧縮解除器であって、該圧縮解除器が復号対象の次のシンボルの値に関する第2のモデル予測を生成するように構成された第2の複数のコンテキスト・モデルと前記第2のモデル予測から第2の最終予測のセットを生成するように構成された第2のミキサであって、前記第2のミキサは、前記第2のモデル予測から特徴行列を生成し、前記第2の最終予測を生成する分類器を訓練する、第2のミキサと前記圧縮データおよび前記第2の最終予測のセットに基づいて、前記受信入力シンボルを生成するように構成された算術デコーダと、を備える、
    データ・ストレージ・システム。
  9. 前記第1および第2のミキサで利用または訓練される前記分類器が、確率的勾配降下法を用いて訓練される、請求項8に記載のデータ・ストレージ・システム。
  10. 前記第1および第2のミキサで利用または訓練される前記分類器が、ミニ・バッチ勾配降下法を用いて訓練される、請求項8に記載のデータ・ストレージ・システム。
  11. 前記第1および第2のミキサで利用または訓練される前記分類器が、雑音対照推定を用いて訓練される、請求項8に記載のデータ・ストレージ・システム。
  12. 前記第1および第2のミキサが、ニューラル・ネットワークである、請求項8に記載のデータ・ストレージ・システム。
  13. 前記第1および第2のミキサで利用または訓練される前記分類器が、最大エントロピー分類器である、請求項8に記載のデータ・ストレージ・システム。
  14. 前記第1および第2のミキサで利用または訓練される前記分類器が、確率的勾配降下法を用いて訓練される最大エントロピー分類器である、請求項8に記載のデータ・ストレージ・システム。
  15. 請求項1~7の何れか1項に記載の方法の各ステップを、コンピュータに実行させるコンピュータ・プログラム。
  16. 請求項15に記載の前記コンピュータ・プログラムを、コンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
JP2019547518A 2017-03-14 2018-02-28 非2値コンテキスト・ミキシング方法、非2値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム Active JP7051887B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/458,651 US10361712B2 (en) 2017-03-14 2017-03-14 Non-binary context mixing compressor/decompressor
US15/458,651 2017-03-14
PCT/IB2018/051283 WO2018167592A1 (en) 2017-03-14 2018-02-28 Non-binary context mixing compressor/decompressor

Publications (2)

Publication Number Publication Date
JP2020510931A JP2020510931A (ja) 2020-04-09
JP7051887B2 true JP7051887B2 (ja) 2022-04-11

Family

ID=63520334

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019547518A Active JP7051887B2 (ja) 2017-03-14 2018-02-28 非2値コンテキスト・ミキシング方法、非2値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム

Country Status (6)

Country Link
US (1) US10361712B2 (ja)
JP (1) JP7051887B2 (ja)
CN (1) CN110301095B (ja)
DE (1) DE112018000485T5 (ja)
GB (1) GB2574957B (ja)
WO (1) WO2018167592A1 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11037330B2 (en) * 2017-04-08 2021-06-15 Intel Corporation Low rank matrix compression
CN110135553B (zh) * 2018-02-09 2021-09-03 宏达国际电子股份有限公司 卷积神经网络的调整方法及电子装置
US11030480B2 (en) * 2018-08-31 2021-06-08 Samsung Electronics Co., Ltd. Electronic device for high-speed compression processing of feature map of CNN utilizing system and controlling method thereof
CN109787638B (zh) * 2019-01-10 2023-03-31 杭州幻方科技有限公司 一种数据压缩存储处理装置及方法
CN110411768B (zh) * 2019-06-05 2021-11-16 合肥通用机械研究院有限公司 一种基于神经网络的冷水机组测控系统及测控方法
JP7419113B2 (ja) 2020-03-05 2024-01-22 キオクシア株式会社 メモリシステム
US11652994B2 (en) * 2021-01-19 2023-05-16 Tencent America LLC Neural image compression with adaptive intra-prediction

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050143928A1 (en) 2003-10-03 2005-06-30 Cira Discovery Sciences, Inc. Method and apparatus for discovering patterns in binary or categorical data
US20150139485A1 (en) 2013-11-15 2015-05-21 Facebook, Inc. Pose-aligned networks for deep attribute modeling
US20160078359A1 (en) 2014-09-12 2016-03-17 Xerox Corporation System for domain adaptation with a domain-specific class means classifier
US20160125307A1 (en) 2013-06-05 2016-05-05 Yu Zheng Air quality inference using multiple data sources

Family Cites Families (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3278297B2 (ja) * 1994-07-20 2002-04-30 富士通株式会社 データ圧縮方法及びデータ復元方法並びにデータ圧縮装置及びデータ復元装置
US6167417A (en) 1998-04-08 2000-12-26 Sarnoff Corporation Convolutive blind source separation using a multiple decorrelation method
US6976257B2 (en) * 1999-12-30 2005-12-13 International Business Machines Corporation Context based execution prioritization in Workflow-Management-Systems
JP3368883B2 (ja) * 2000-02-04 2003-01-20 インターナショナル・ビジネス・マシーンズ・コーポレーション データ圧縮装置、データベースシステム、データ通信システム、データ圧縮方法、記憶媒体及びプログラム伝送装置
IL158156A0 (en) * 2001-03-30 2004-03-28 Yissum Res Dev Co Discriminative feature selection for data sequences
KR100446635B1 (ko) * 2001-11-27 2004-09-04 삼성전자주식회사 깊이 이미지 기반 3차원 객체 표현 장치 및 방법
EP1734511B1 (en) * 2002-09-04 2009-11-18 Microsoft Corporation Entropy coding by adapting coding between level and run-length/level modes
US7194137B2 (en) 2003-05-16 2007-03-20 Cisco Technology, Inc. Variable length coding method and apparatus for video compression
US7379608B2 (en) * 2003-12-04 2008-05-27 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung, E.V. Arithmetic coding for transforming video and picture data units
US20070233477A1 (en) * 2006-03-30 2007-10-04 Infima Ltd. Lossless Data Compression Using Adaptive Context Modeling
US8554551B2 (en) 2008-01-28 2013-10-08 Qualcomm Incorporated Systems, methods, and apparatus for context replacement by audio level
US20090193042A1 (en) * 2008-01-29 2009-07-30 International Business Machines Corporation System and computer program product for automated design of row compression on tables in a relational database
US7864083B2 (en) 2008-05-21 2011-01-04 Ocarina Networks, Inc. Efficient data compression and decompression of numeric sequences
EP2279417B1 (en) * 2008-05-28 2016-07-20 Georgia Tech Research Corporation Metabolic biomarkers for ovarian cancer and methods of use thereof
US8917209B2 (en) * 2009-09-10 2014-12-23 Nextnav, Llc Coding in a wide area positioning system (WAPS)
US20100161368A1 (en) * 2008-12-23 2010-06-24 International Business Machines Corporation Managing energy in a data center
US8799690B2 (en) * 2009-06-21 2014-08-05 International Business Machines Corporation Prioritized workload routing in a data center
US9292493B2 (en) * 2010-01-07 2016-03-22 The Trustees Of The Stevens Institute Of Technology Systems and methods for automatically detecting deception in human communications expressed in digital form
US20120254333A1 (en) * 2010-01-07 2012-10-04 Rajarathnam Chandramouli Automated detection of deception in short and multilingual electronic messages
BR122021008581B1 (pt) 2010-01-12 2022-08-16 Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. Codificador de áudio, decodificador de áudio, método de codificação e informação de áudio, e método de decodificação de uma informação de áudio que utiliza uma tabela hash que descreve tanto valores de estado significativos como limites de intervalo
US20110212422A1 (en) * 2010-02-26 2011-09-01 Nti, Inc. Cognitive Capacity Assessment System
TWI403170B (zh) * 2010-05-21 2013-07-21 Univ Nat Chiao Tung 背景調適性二進制算術解碼裝置及其解碼方法
US8533166B1 (en) 2010-08-20 2013-09-10 Brevity Ventures LLC Methods and systems for encoding/decoding files and transmission thereof
US8601483B2 (en) * 2011-03-22 2013-12-03 International Business Machines Corporation Forecasting based service for virtual machine reassignment in computing environment
US20140059279A1 (en) * 2012-08-27 2014-02-27 Virginia Commonwealth University SSD Lifetime Via Exploiting Content Locality
US9256838B2 (en) * 2013-03-15 2016-02-09 International Business Machines Corporation Scalable online hierarchical meta-learning
US9363190B2 (en) * 2013-07-31 2016-06-07 Manjrasoft Pty. Ltd. System, method and computer program product for energy-efficient and service level agreement (SLA)-based management of data centers for cloud computing
US20150134312A1 (en) * 2013-11-11 2015-05-14 International Business Machines Corporation Evaluation of Service Delivery Models
GB2523348B (en) * 2014-02-20 2016-03-30 Gurulogic Microsystems Oy Encoder, decoder and method
US9740724B2 (en) * 2014-04-29 2017-08-22 International Business Machines Corporation Data partitioning for high-efficiency data retrieval
EP3138241A4 (en) * 2014-05-01 2018-04-11 Coho Data, Inc. Systems, devices and methods for generating locality-indicative data representations of data streams, and compressions thereof
US10043231B2 (en) * 2015-06-30 2018-08-07 Oath Inc. Methods and systems for detecting and recognizing text from images
US9779492B1 (en) * 2016-03-15 2017-10-03 International Business Machines Corporation Retinal image quality assessment, error identification and automatic quality correction
US10700702B2 (en) * 2016-03-24 2020-06-30 International Business Machines Corporation Updating prefix codes for pseudo-dynamic data compression
CN105721611B (zh) 2016-04-15 2019-03-01 西南交通大学 一种由极大距离可分存储码生成最小存储再生码的方法
US10657034B2 (en) * 2016-07-25 2020-05-19 International Business Machines Corporation System testing using time compression
US11507890B2 (en) * 2016-09-28 2022-11-22 International Business Machines Corporation Ensemble model policy generation for prediction systems
US20180131749A1 (en) * 2016-11-10 2018-05-10 Ingram Micro Inc. System and Method for Optimizing Data Transfer using Selective Compression

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050143928A1 (en) 2003-10-03 2005-06-30 Cira Discovery Sciences, Inc. Method and apparatus for discovering patterns in binary or categorical data
US20160125307A1 (en) 2013-06-05 2016-05-05 Yu Zheng Air quality inference using multiple data sources
US20150139485A1 (en) 2013-11-15 2015-05-21 Facebook, Inc. Pose-aligned networks for deep attribute modeling
US20160078359A1 (en) 2014-09-12 2016-03-17 Xerox Corporation System for domain adaptation with a domain-specific class means classifier

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
MATTERN, C.,Combining Non-stationary Prediction, Optimization and Mixing for Data Compression,2011 First International Conference on Data Compression, Communications and Procecssing,2011年06月24日,Retrieved from the Internet: <URL: https://ieeexplore.ieee.org/document/6061024> [Retrieved on 2021-08-27],DOI: 10.1109/CCP.2011.22
MATTERN, C.,Linear and Geometric Mixtures - Analysis,2013 Data Compression Conference [online],2013年03月20日,pp. 301-310,Retrieved from the Internet: <URL: https://ieeexplore.ieee.org/document/6543066> [Retrieved on 2021-08-27],DOI: 10.1109/DCC.2013.38

Also Published As

Publication number Publication date
GB201913461D0 (en) 2019-10-30
JP2020510931A (ja) 2020-04-09
CN110301095A (zh) 2019-10-01
CN110301095B (zh) 2023-05-02
GB2574957A (en) 2019-12-25
WO2018167592A1 (en) 2018-09-20
GB2574957B (en) 2020-08-19
US10361712B2 (en) 2019-07-23
US20180269897A1 (en) 2018-09-20
DE112018000485T5 (de) 2019-10-31

Similar Documents

Publication Publication Date Title
JP7051887B2 (ja) 非2値コンテキスト・ミキシング方法、非2値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム
US10592173B2 (en) Increasing storage efficiency of a data protection technique
US10700702B2 (en) Updating prefix codes for pseudo-dynamic data compression
US10496293B2 (en) Techniques for selecting storage blocks for garbage collection based on longevity information
US10235283B2 (en) Techniques for supporting in-place updates with a log-structured array controller
US10445016B2 (en) Techniques for storage command processing
US9509342B2 (en) Error correcting code decoder
US10592110B2 (en) Techniques for dynamically adjusting over-provisioning space of a flash controller based on workload characteristics
US10884914B2 (en) Regrouping data during relocation to facilitate write amplification reduction
US10310938B2 (en) Data deduplication with reduced hash computations
JP6855102B2 (ja) 不揮発性メモリ・システムにおけるマルチページ障害の回復
US9184767B2 (en) Scoring variable nodes for low density parity check code decoding
US9898215B2 (en) Efficient management of page retirement in non-volatile memory utilizing page retirement classes
US9740609B1 (en) Garbage collection techniques for a data storage system
CN111712804B (zh) 使用数据块的可变逻辑到物理关联的增强错误校正码能力
US20170115900A1 (en) Dummy page insertion for flexible page retirement in flash memory storing multiple bits per memory cell
JP6342013B2 (ja) 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム
US9417809B1 (en) Efficient management of page retirement in non-volatile memory utilizing page retirement classes
US10268537B2 (en) Initializing a pseudo-dynamic data compression system with predetermined history data typical of actual data
US10797723B2 (en) Building a context model ensemble in a context mixing compressor

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191112

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200826

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210913

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20211201

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220111

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220304

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: 20220322

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220330

R150 Certificate of patent or registration of utility model

Ref document number: 7051887

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150