(57)【要約】【課題】非２値コンテキスト・ミキシング方法、非２値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム製品を提供する。【解決手段】圧縮器における非２値コンテキスト・ミキシングの技術は、複数のコンテキスト・モデルが、符号化対象の次のシンボルの値に関するモデル予測を生成することを含む。ミキサは、これらのモデル予測から最終予測のセットを生成する。算術エンコーダは、受信入力シンボルおよび最終予測のセットに基づいて圧縮データを生成する。受信入力シンボルは、２を超えるサイズを有するアルファベットに属し、ミキサは、モデル予測から特徴行列を生成し、最終予測のセットを生成する分類器を訓練する。【選択図】図２１
2020510931.tif 000002
【特許請求の範囲】
【請求項１】
圧縮器における非２値コンテキスト・ミキシングの方法であって、
複数のコンテキスト・モデルが、符号化対象の次のシンボルの値に関するモデル予測を生成することと、
ミキサが、前記モデル予測から最終予測のセットを生成することと、
算術エンコーダが、受信入力シンボルおよび前記最終予測のセットに基づいて圧縮データを生成することと
を含み、前記受信入力シンボルが、２を超えるサイズを有するアルファベットに属し、前記ミキサが、前記モデル予測から特徴行列を生成し、前記最終予測のセットを生成する分類器を訓練する、方法。
【請求項２】
前記分類器が、最大エントロピー分類器である、請求項１に記載の方法。
【請求項３】
前記分類器が、確率的勾配降下法を用いて訓練される、請求項１に記載の方法。
【請求項４】
前記分類器が、ミニ・バッチ勾配降下法を用いて訓練される、請求項１に記載の方法。
【請求項５】
前記分類器が、雑音対照推定を用いて訓練される、請求項１に記載の方法。
【請求項６】
前記ミキサが、ニューラル・ネットワークである、請求項１に記載の方法。
【請求項７】
前記分類器が、確率的勾配降下法を用いて訓練される最大エントロピー分類器である、請求項１に記載の方法。
【請求項８】
データ・ストレージ・システムであって、
符号化対象の次のシンボルの値に関する第１のモデル予測を生成するように構成された第１の複数のコンテキスト・モデルと、
前記第１のモデル予測から第１の最終予測のセットを生成するように構成された第１のミキサと、
受信入力シンボルおよび前記第１の最終予測のセットに基づいて圧縮データを生成するように構成された算術エンコーダであり、前記受信入力シンボルが２を超えるサイズを有するアルファベットに属する、前記算術エンコーダと
を備える、非２値コンテキスト・ミキシング圧縮器、ならびに
復号対象の次のシンボルの値に関する第２のモデル予測を生成するように構成された第２の複数のコンテキスト・モデルと、
前記第２のモデル予測から第２の最終予測のセットを生成するように構成された第２のミキサと、
前記圧縮データおよび前記第２の最終予測のセットに基づいて前記受信入力シンボルを生成するように構成された算術デコーダと
を備える、非２値コンテキスト・ミキシング圧縮解除器
を備え、前記第１および第２のミキサが、前記第１および第２のモデル予測から特徴行列を生成し、前記第１および第２の最終予測のセットを生成するそれぞれの分類器を訓練する、データ・ストレージ・システム。
【請求項９】
前記分類器が、確率的勾配降下法を用いて訓練される、請求項８に記載のデータ・ストレージ・システム。
【請求項１０】
前記分類器が、ミニ・バッチ勾配降下法を用いて訓練される、請求項８に記載のデータ・ストレージ・システム。
【請求項１１】
前記分類器が、雑音対照推定を用いて訓練される、請求項８に記載のデータ・ストレージ・システム。
【請求項１２】
前記第１および第２のミキサが、ニューラル・ネットワークである、請求項８に記載のデータ・ストレージ・システム。
【請求項１３】
前記分類器が、最大エントロピー分類器である、請求項８に記載のデータ・ストレージ・システム。
【請求項１４】
前記分類器が、確率的勾配降下法を用いて訓練される最大エントロピー分類器である、請求項８に記載のデータ・ストレージ・システム。
【請求項１５】
プログラム命令が実装されたコンピュータ可読ストレージ媒体を含むコンピュータ・プログラム製品であって、前記プログラム命令が、制御装置によって実行可能であり、前記制御装置に、
符号化対象の次のシンボルの値に関するモデル予測を生成させ、
前記モデル予測から最終予測のセットを生成させ、
受信入力シンボルおよび前記最終予測のセットに基づいて圧縮データを生成させ、前記受信入力シンボルが、２を超えるサイズを有するアルファベットに属し、前記ミキサが、前記モデル予測から特徴行列を生成し、前記最終予測のセットを生成する分類器を訓練する、コンピュータ・プログラム製品。
【請求項１６】
前記分類器が、確率的勾配降下法を用いて訓練される、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１７】
前記分類器が、ミニ・バッチ勾配降下法および雑音対照推定のうちの一方を用いて訓練される、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１８】
前記ミキサが、ニューラル・ネットワークである、請求項１５に記載のコンピュータ・プログラム製品。
【請求項１９】
前記分類器が、最大エントロピー分類器である、請求項１５に記載のコンピュータ・プログラム製品。
【請求項２０】
前記分類器が、確率的勾配降下法を用いて訓練される最大エントロピー分類器である、請求項１５に記載のコンピュータ・プログラム製品。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、データの処理および記憶に関し、さらに詳細には、フラッシュ・メモリ・システムなどのデータ・ストレージ・システムに非２値コンテキスト・ミキシング（context mixing）圧縮器（compressor）／圧縮解除器（decompressor）を実装することに関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュ・メモリは、トランジスタまたは同様の電荷トラップ構造の浮遊ゲート上の電荷としてメモリ・セルごとに１ビットまたは複数ビットのデータを記憶する電気的にプログラム可能および消去可能な不揮発性メモリ技術である。代表的な実装形態では、ＮＡＮＤ型フラッシュ・メモリ・アレイは、ブロック（「消去ブロック」とも呼ばれる）単位の物理メモリで構成され、各ブロックは、複数のメモリ・セルをそれぞれ含む複数の物理ページを含む。メモリ・セルにアクセスするために利用されるワード線およびビット線の構成により、フラッシュ・メモリ・アレイは、一般に、プログラムはページごとに行うことができるが、消去はブロックごとに行われる。
【０００３】
当技術分野で既知の通り、ＮＡＮＤ型フラッシュ・メモリのブロックは、新たなデータでプログラムする前に消去しなければならない。ＮＡＮＤ型フラッシュ・メモリのブロックは、選択したブロックのｐウェル・バルク領域に高い正の消去電圧パルスを印加し、消去対象のメモリ・セルの全てのワード線に接地電位のバイアスをかけることによって、消去される。消去パルスを印加することにより、接地電位にバイアスされたメモリ・セルの浮遊ゲートからの電子のトンネル効果を促進して、それらの浮遊ゲートに正味の正電荷を与えることにより、それらのメモリ・セルの電圧しきい値を消去状態に向かって移行させる。一般には、各消去パルスに続いて、消去ブロックを読み取って、例えば消去できなかった消去ブロック中のメモリ・セルの数がしきい値数未満であることを検証することなどにより消去動作が成功したかどうかを判定する消去検証動作を行う。一般には、消去検証動作が成功するまで、または所定数の消去パルスを使用する（すなわち消去パルス予定数を使い果たす）まで、消去パルスを消去ブロックに印加し続ける。
【０００４】
ＮＡＮＤ型フラッシュ・メモリ・セルは、プログラム対象のメモリ・セルのワード線に高い正のプログラム電圧を印加し、プログラミングを禁止する同じストリング内のメモリ・セルに中間パス電圧を印加することによって、プログラムすることができる。プログラム電圧を印加することによって、浮遊ゲートへの電子のトンネル効果を引き起こして、その浮遊ゲートの状態を、初期の消去状態から、正味の負電荷を有するプログラム状態に変化させる。プログラムに続いて、通常は、読取り検証動作でプログラム済みのページを読み取り、例えばビット・エラーを含むプログラム済みページ内のメモリ・セルの数がしきい値数未満であることを検証することなどにより、プログラム動作が成功したことを保証する。一般に、読取り検証動作が成功するまで、または所定数のプログラム・パルスを使用する（すなわちプログラム・パルス予定数を使い果たす）まで、プログラム動作および読取り検証動作は、ページに適用される。
【０００５】
ＰＡＱは、共同開発によって、圧縮率（ＣＲ）を測定するいくつかのベンチマークについて最上位ランクを有する一連の可逆的データ圧縮アーカイバを提供するものである。一般に、ＰＡＱの様々なバージョンで、コンテキスト・ミキシング・アルゴリズムを実施している。コンテキスト・ミキシングは、圧縮器／圧縮解除器を予測器と算術エンコーダ／デコーダとに分割するという点では、Ｐｒｅｄｉｃｔｉｏｎ  ｂｙ  Ｐａｒｔｉａｌ  Ｍａｔｃｈｉｎｇ（ＰＰＭ）と関係があるが、異なるコンテキストを条件とする多数のモデルから得られる確率推定を重み付けして組み合わせたものを用いて次シンボル予測を計算するという点では異なる。ＰＰＭと異なり、ＰＡＱにおけるコンテキストは、連続していなくてもよい。
【０００６】
一般に、あらゆるバージョンのＰＡＱは、モデルの詳細、および予測をどのように組み合わせて後処理するかという点では異なるが、一度に１ビットずつ予測して圧縮する。次のビットの確率を決定するときには、次のビットを算術符号化によって符号化する。ＰＡＱ１からＰＡＱ３では、各予測は、重み付け加算によって組み合わされた１対のビット数として表され、コンテキストが長くなるほど、大きく重み付けされる。ＰＡＱ４からＰＡＱ６では、予測は（ＰＡＱ１からＰＡＱ３と同様に）組み合わされるが、各モデルに割り当てられる重みは、より精度の高いモデルを偏重するように調整される。ＰＡＱ７以降のバージョンのＰＡＱでは、各モデルは、（１対のビット数ではなく）確率を出力し、それらのモデルの確率は、ニューラル・ネットワーク・ミキサを用いて組み合わされる。
【０００７】
残念ながら、コンテキスト・ミキシング圧縮アルゴリズムは、実装するコンテキスト・モデルが多数であること、ニューラル計算が複雑であること、および２値性を有することにより、ほぼ全ての既知の圧縮ベンチマークで最上位を占めるが、非常に低速になる傾向がある（例えば、ＰＡＱ８ｌアルゴリズムの帯域幅は、約２０ｋＢ／ｓである）。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】米国特許第８１７６２８４号
【特許文献２】米国特許第８１７６３６０号
【特許文献３】米国特許第８４４３１３６号
【特許文献４】米国特許第８６３１２７３号
【非特許文献】
【０００９】
【非特許文献１】Mattern, C., "Mixing Strategies in Data Compression", in Data Compression Conference (DCC), 2012, pp.337-346
【発明の概要】
【発明が解決しようとする課題】
【００１０】
従って発明が解決しようとする課題は非２値コンテキスト・ミキシング圧縮器／圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラムを提供することである。
【課題を解決するための手段】
【００１１】
圧縮器における非２値コンテキスト・ミキシングの技術は、複数のコンテキスト・モデルが、符号化対象の次のシンボルの値に関するモデル予測を生成することを含む。ミキサは、これらのモデル予測から最終予測のセットを生成する。算術エンコーダは、受信入力シンボルおよび最終予測のセットに基づいて圧縮データを生成する。受信入力シンボルは、２を超えるサイズを有するアルファベットに属し、ミキサは、モデル予測から特徴行列を生成し、最終予測のセットを生成する分類器を訓練する。
【００１２】
別の実施形態によれば、分類器は、最大エントロピー分類器である。
【００１３】
さらに別の実施形態によれば、分類器は、確率的勾配降下法を用いて訓練される。
【００１４】
異なる実施形態によれば、分類器は、ミニ・バッチ勾配降下法を用いて訓練される。
【００１５】
さらに別の実施形態によれば、分類器は、雑音対照推定（noise contrastive estimation）を用いて訓練される。
【００１６】
別の実施形態では、ミキサは、ニューラル・ネットワークである。
【００１７】
さらに別の実施形態では、分類器は、確率的勾配降下法を用いて訓練される最大エントロピー分類器である。
【００１８】
開示する技術は、方法、データ・ストレージ・システム、またはプログラム製品（ストレージ・デバイスに記憶されたプログラム・コードを含む）、あるいはそれらの組合せとして実施することができる。
【図面の簡単な説明】
【００１９】
【図１】１実施形態によるデータ処理環境を示すハイレベル・ブロック図である。
【図２】図１のデータ・ストレージ・システムの例示的なインタフェース・ノードを示す、より詳細なブロック図である。
【図３】図１のデータ・ストレージ・システムの例示的なフラッシュ・カードを示す、より詳細なブロック図である。
【図４】本開示によるＮＡＮＤ型フラッシュ・メモリ・システム内の物理メモリの例示的な構成を示す図である。
【図５】本開示によるＮＡＮＤ型フラッシュ・メモリ・システム内の物理メモリの例示的な構成を示す図である。
【図６】本開示によるＮＡＮＤ型フラッシュ・メモリ・システム内の物理メモリの例示的な構成を示す図である。
【図７】本開示によるＮＡＮＤ型フラッシュ・メモリ・システム内の物理メモリの例示的な構成を示す図である。
【図８】本開示によるブロック・ストライプの例示的な実施態様を示す図である。
【図９】本開示によるページ・ストライプの例示的な実施態様を示す図である。
【図１０】本開示による各データ・ページに記憶される例示的なコードワードを示す図である。
【図１１】本開示による各データ保護ページに記憶される例示的なコードワードを示す図である。
【図１２】本開示の１実施形態によるフラッシュ制御装置によって利用されるフラッシュ管理機能およびデータ構造を示すハイレベル流れ図である。
【図１３】本開示の１実施形態による例示的なフラッシュ制御装置を示す、より詳細な図である。
【図１４】例示的な従来の圧縮器を示すブロック図である。
【図１５】例示的な従来の圧縮解除器を示すブロック図である。
【図１６】コンテキスト・ミキシングによって予測を実行する例示的な従来の予測器を示すブロック図である。
【図１７】ロジスティック・ミキシングを実行する例示的な従来のミキサを示すブロック図である。
【図１８】本開示の実施形態に従って構成された例示的な圧縮器を示すブロック図である。
【図１９】本開示に従って構成された３つの異なる例示的なミキサ（すなわち実施形態「Ａ」、「Ｂ」、および「Ｃ」）についてのそれぞれの数式を含む表を示す図である。
【図２０】１つのアルファベットが４つの入力シンボル（すなわちＫ＝４）を有する、図１９の実施形態「Ａ」の例示的なミキサを示すブロック図である。
【図２１】本開示の１実施形態による、非２値コンテキスト・ミキシングを実施する例示的な圧縮プロセスを示すハイレベル論理流れ図である。
【図２２】本開示の１実施形態による、非２値コンテキスト・ミキシングを実施する例示的な圧縮解除プロセスを示すハイレベル論理流れ図である。
【図２３】本開示の別の実施形態による、非２値コンテキスト・ミキシングのためにコンテキスト・モデルを選択する例示的なプロセスを示すハイレベル論理流れ図である。
【発明を実施するための形態】
【００２０】
本開示の１つまたは複数の実施形態によれば、シンボル予測のミキシングを実行して学習予測を生成する最大エントロピー・モデルまたはニューラル・ネットワークへの入力として分布するシンボル予測を作成するコンテキスト・モデルのアンサンブルを含む、非２値コンテキスト・ミキシング圧縮器／圧縮解除器アーキテクチャが開示される。本開示の１つまたは複数のその他の実施形態によれば、このアーキテクチャは、特定の顧客作業負荷についての（最大エントロピー・モデルまたはニューラル・ネットワーク・ミキサへの入力を提供するための）コンテキスト・モデルの最良のアンサンブルを学習するコンテキスト・モデル選択の技術と結合される。開示する圧縮技術は、インラインで（例えばフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）アクセラレーションを用いて）実施することもできるし、バックグラウンドで（例えばソフトウェアによって）実施することができる。開示する技術は、ニューラル・ネットワーク・ミキシングを用いたコンテキスト・モデリングに幅広く適用することができる。
【００２１】
図面、特に図１を参照すると、本明細書にさらに記載する不揮発性メモリ・アレイを有する、本開示によるデータ圧縮／圧縮解除を実行するように構成されたデータ・ストレージ・システム１２０を含む、例示的なデータ処理環境１００を示すハイレベル・ブロック図が示してある。図示のように、データ処理環境１００は、命令およびデータを処理する１つまたは複数のプロセッサ１０４を有するプロセッサ・システム１０２など、１つまたは複数のホストを含む。プロセッサ・システム１０２は、さらに、プログラム・コード、オペランド、またはプロセッサ１０４によって実行される処理の実行結果、あるいはそれらの組合せを記憶することができるローカル・ストレージ１０６（例えばダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）またはディスクなど）を含むこともある。様々な実施形態では、プロセッサ・システム１０２は、例えば、モバイル・コンピューティング・デバイス（スマートフォンまたはタブレットなど）、ラップトップまたはデスクトップ型のパーソナル・コンピュータ・システム、サーバ・コンピュータ・システム（ＩＢＭ社製のＰＯＷＥＲ（Ｒ）シリーズのうちの１つなど）、あるいはメインフレーム・コンピュータ・システムである可能性がある。プロセッサ・システム１０２は、メモリ・キャッシュ、メモリ・コントローラ、ローカル・ストレージ、Ｉ／Ｏバス・ハブなどと組み合わせたＡＲＭ（Ｒ）、ＰＯＷＥＲ（Ｒ）、Ｉｎｔｅｌ  Ｘ８６（Ｒ）、またはその他の任意のプロセッサなどの様々なプロセッサを用いる、組込みプロセッサ・システムであってもよい。
【００２２】
各プロセッサ・システム１０２は、Ｉ／Ｏチャネル１１０を介してデータ・ストレージ・システム１２０に直接（すなわちいかなるデバイスも介在させずに）、または間接（すなわち少なくとも１つの中間デバイスを通して）に結合された入出力（Ｉ／Ｏ）アダプタ１０８をさらに含む。様々な実施形態において、Ｉ／Ｏチャネル１１０は、例えばファイバ・チャネル（ＦＣ）、ＦＣ  ｏｖｅｒ  Ｅｔｈｅｒｎｅｔ（Ｒ）（ＦＣｏＥ）、アイスカジー（ｉＳＣＳＩ）、インフィニバンド、伝送制御プロトコル／インターネット・プロトコル（ＴＣＰ／ＩＰ）、ＰＣＩｅなど、既知の、または将来開発される通信プロトコルのうちの任意の１つ、またはそれらの組合せを利用することができる。Ｉ／Ｏチャネル１１０を介して通信されるＩ／Ｏ動作（ＩＯＰ）は、プロセッサ・システム１０２がデータ・ストレージ・システム１２０にデータを要求するための読取りＩＯＰ、およびプロセッサ・システム１０２がデータ・ストレージ・システム１２０へのデータの記憶を要求するための書込みＩＯＰを含む。
【００２３】
図示の実施形態では、データ・ストレージ・システム１２０は、データ・ストレージ・システム１２０がＩ／Ｏチャネル１１０を介してＩＯＰを受信してこれに応答するための複数のインタフェース・ノード１２２を含む。各インタフェース・ノード１２２は、耐故障性およびロード・バランシングを促進するために、複数のＲＡＩＤ制御装置１２４のそれぞれに結合されている。各ＲＡＩＤ制御装置１２４は、この例ではＮＡＮＤ型フラッシュ・ストレージ媒体を含む複数のフラッシュ・カード１２６のそれぞれに（例えばＰＣＩｅバスによって）結合されている。
【００２４】
図２は、図１のデータ・ストレージ・システム１２０のインタフェース・ノード１２２を示す、より詳細なブロック図である。インタフェース・ノード１２２は、Ｉ／Ｏチャネル１１０を介してプロセッサ・システム１０２とのインタフェースとして機能し、ホスト側スイッチング・ファブリック１１２に接続する、１つまたは複数のインタフェース・カード１１１を含む。ホスト側スイッチング・ファブリック１１２は、スイッチとして作用し、インタフェース・カード１１１と、インタフェース・ノード１１２内の処理ユニット、すなわち制御プレーン汎用プロセッサ（ＧＰＰ）１１３、データ・プレーンＧＰＰ１１６、およびデータ・プレーン・プロセッサ１１７との間の全てのデータ転送を処理する。通常は、ホスト側スイッチング・ファブリック１１２は、ＰＣＩｅスイッチからなるが、他のスイッチ技術を使用することもできる。データ・プレーン・プロセッサ１１７は、例えば特定用途向け集積回路（ＡＳＩＣ）またはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）によって実装することができる特殊目的プロセッサである。制御プレーンＧＰＰ１１３、データ・プレーンＧＰＰ１１６、およびデータ・プレーン・プロセッサ１１７は、全て、これらの構成要素間の共用メモリ、別個のメモリ、またはそれらの組合せとして実装することができるメモリ１１４に接続されている。
【００２５】
データ・プレーン・プロセッサ１１７は、フラッシュ・カード１２６に書き込む、またはフラッシュ・カード１２６から読み取る対象の受信データ・ページについてフィンガプリントを生成するフィンガプリント・エンジン１１８を実装する。データ・プレーン・プロセッサ１１７は、さらに、メモリ１１４に記憶されているフィンガプリント参照テーブル（ＬＵＴ）１１５に、直接、またはデータ・プレーンＧＰＰ１１６または制御プレーンＧＰＰ１１３と通信することによって、アクセスすることができる。受信データ・ページについてのフィンガプリントは、ハッシュ、ＣＲＣ、またはハッシュとＣＲＣの組合せを含む可能性がある。フィンガプリント・エンジン１１８（またはデータ・プレーン・プロセッサ１１７内のその他の論理）は、受信データ・ページの圧縮ページ・サイズを決定するように構成することもできる。フィンガプリントＬＵＴ１１５は、フラッシュ・カード１２６に記憶されたデータ・ページについてのフィンガプリントを記憶する。フィンガプリントＬＵＴ１１５は、メモリ・サイズの制限があるので、任意の所与の時点で、フラッシュ・カード１２６に記憶されたデータ・ページの一部についてのフィンガプリントを記憶しているだけでよいことを理解されたい。
【００２６】
データ・プレーン・プロセッサ１１７がＦＰＧＡで実装される実施形態では、制御プレーンＧＰＰ１１３は、データ・ストレージ・システム１２０の起動中にデータ・プレーン・プロセッサ１１７をプログラムして構成することができる。データ・プレーンＧＰＰ１１６および制御プレーンＧＰＰ１１３は、データ・プレーン・プロセッサ１１７を制御するだけでなく、データ・プレーン・プロセッサ１１７の制御を介して間接に、またはディスク側スイッチング・ファブリック１１９を介して直接に、フラッシュ・カード１２６にアクセスする。制御プレーンＧＰＰ１１３は、システム管理機能、ならびにスナップショット、シン・プロビジョニング、および重複排除など、より高水準のサービスを実行する。データ・プレーンＧＰＰ１１６は、プロトコル固有機能を実行する。制御プレーンＧＰＰ１１３、データ・プレーンＧＰＰ１１６、およびデータ・プレーン・プロセッサ１１７は、ディスク側スイッチング・ファブリック１１９を介してＲＡＩＤ制御装置１２４に接続されている。ディスク側スイッチング・ファブリック１１９は、通常はＰＣＩｅスイッチからなるが、他のスイッチ技術を使用することもできる。図２は、さらに、制御プレーンＧＰＰ１１３およびデータ・プレーン・プロセッサ１１７が、フェイルオーバ・シナリオを扱うため、または他のデータ同期機能を実行するために、データ・ストレージ・システム１２０内の他のインタフェース・ノード１２２に接続されていることも示している。
【００２７】
図３は、図２のデータ・ストレージ・システム１２０のフラッシュ・カード１２６を示す、より詳細なブロック図である。フラッシュ・カード１２６は、フラッシュ・カード１２６とＲＡＩＤ制御装置１２４の間のインタフェースとして機能するゲートウェイ１３０を含む。ゲートウェイ１３０は、汎用プロセッサ（ＧＰＰ）１３２に結合されており、このＧＰＰ１３２は、ゲートウェイ１３０が受信したＩＯＰの前処理など様々な管理機能を実行する、またはフラッシュ・カード１２６によるＩＯＰのサービスをスケジューリングする、あるいはその両方を行うように（例えばプログラム・コードによって）構成することができる。ＧＰＰ１３２は、ＧＰＰ１３２によって作成、参照、または修正、あるいはそれらの組合せが行われるデータを、その処理の途中で好都合にバッファすることができる、ＧＰＰメモリ１３４（例えばダイナミック・ランダム・アクセス・メモリ（ＤＲＡＭ）または磁気抵抗ランダム・アクセス・メモリ（ＭＲＡＭ））に結合されている。
【００２８】
ゲートウェイ１３０は、複数のフラッシュ制御装置１４０にさらに結合されており、各フラッシュ制御装置１４０は、それぞれのＮＡＮＤ型フラッシュ・メモリ・システム１５０を制御する。フラッシュ制御装置１４０は、例えば、関連するフラッシュ制御装置メモリ１４２（例えばＤＲＡＭ）を有する特定用途向け集積回路（ＡＳＩＣ）またはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）によって実装することができる。フラッシュ制御装置１４０がＦＰＧＡで実装される実施形態では、ＧＰＰ１３２は、データ・ストレージ・システム１２０の起動中にフラッシュ制御装置１４０をプログラムして構成することができる。起動後、一般動作中に、フラッシュ制御装置１４０は、ゲートウェイ１３０から、ＮＡＮＤ型フラッシュ・メモリ・システム１５０に記憶されているデータを読み取る、またはＮＡＮＤ型フラッシュ・メモリ・システム１５０にデータを記憶する、あるいはその両方を行うことを要求する読取りＩＯＰおよび書込みＩＯＰを受け取る。フラッシュ制御装置１４０は、例えばＮＡＮＤ型フラッシュ・メモリ・システム１５０にアクセスして、要求されたデータをＮＡＮＤ型フラッシュ・メモリ・システム１５０から読み取る、またはＮＡＮＤ型フラッシュ・メモリ・システム１５０にデータに書き込むことによって、あるいはＮＡＮＤ型フラッシュ・メモリ・システム１５０と関連付けられた１つまたは複数の読取りキャッシュ、または書込みキャッシュ、あるいはその組合せ（これらは図３には図示せず）にアクセスすることによって、これらのＩＯＰにサービスする。例えば、ＮＡＮＤ型フラッシュ・メモリ・システム１５０は、データ・ページと、１つまたは複数のデータ・ページについてのフィンガプリント・メタデータ（ＭＤ）を提供する１つまたは複数のフィンガプリント・メタデータ・ページとの組合せを記憶することもある。代替の実施形態では、フィンガプリントＭＤは、データ・ページとは異なるメモリに記憶することもできる。
【００２９】
フラッシュ制御装置１４０は、論理／物理アドレス変換を行ってＮＡＮＤ型フラッシュ・メモリ・システム１５０内の特定のメモリ位置にアクセスすることを可能にするフラッシュ変換レイヤ（ＦＴＬ）を実装する。一般に、プロセッサ・システム１０２などのホスト・デバイスからフラッシュ制御装置１４０が受け取るＩＯＰは、そのデータがアクセス（読取りまたは書込み）される論理ブロック・アドレス（ＬＢＡ）と、例えば書込みＩＯＰである場合には、データ・ストレージ・システム１２０に書き込む対象の書込みデータとを含む。ＩＯＰは、アクセスするデータの量（またはサイズ）を指定することもできる。データ・ストレージ・システム１２０によってサポートされるプロトコルおよび機能によっては、他の情報を通信することもできる。当業者には既知の通り、ＮＡＮＤ型フラッシュ・メモリ・システム１５０で利用されるようなＮＡＮＤ型フラッシュ・メモリは、読取りまたは書込みＩＯＰがアクセスすることができるデータの最小単位が、フラッシュ・メモリ・ページ１ページ、例えば１６キロバイト（ｋＢ）のサイズに固定されるように、その構造の制約を受ける。ホスト・デバイスによって提供されるＬＢＡは、論理アドレス空間内の論理ページに対応し、この論理ページは、通常は４キロバイトのサイズを有する。したがって、物理フラッシュ・ページに複数の論理ページを記憶することができる。ＦＴＬは、このＬＢＡを、ＮＡＮＤ型フラッシュ・メモリ・システム１５０内の対応する物理位置に割り当てられた物理アドレスに変換する。
【００３０】
フラッシュ制御装置１４０は、アドレス変換を実行する、またはフラッシュ制御装置メモリ１４２に好都合に記憶することができる論理／物理アドレス変換（ＬＰＴ）テーブルなどの論理／物理変換データ構造内の論理アドレスと物理アドレスの間のマッピングを記憶する、あるいはその両方を行うことができる。ＬＰＴテーブルは、ＮＡＮＤ型フラッシュ・メモリ・システム１５０に記憶されたデータ・ページの圧縮ページ・サイズを記憶し、さらにそれらのＣＲＣ値も記憶するように構成することもできる。
【００３１】
ＮＡＮＤ型フラッシュ・メモリ・システム１５０は、様々な実施形態において、多数の形態をとることができる。次に図４から図７を参照すると、１つの例示的な実施形態によるＮＡＮＤ型フラッシュ・メモリ・システム１５０内の１つの例示的な物理メモリ構成が示してある。
【００３２】
図４を参照すると、ＮＡＮＤ型フラッシュ・メモリ・システム１５０は、３２個の個別アドレス指定可能なＮＡＮＤ型フラッシュ・メモリ・ストレージ・デバイスで構成することができる。図示の例では、各フラッシュ・メモリ・ストレージ・デバイスＭ０ａからＭ１５ｂは、セルごとに２ビット以上のビットを記憶することができる基板実装型フラッシュ・メモリ・モジュールの形態をとる。したがって、フラッシュ・メモリ・モジュールは、シングル・レベル・セル（ＳＬＣ）、マルチ・レベル・セル（ＭＬＣ）、３レベル・セル（ＴＬＣ）、またはクワッド・レベル・セル（Quad Level Cell）（ＱＬＣ）で実装することができる。この３２個のＮＡＮＤ型フラッシュ・メモリ・モジュールは、（Ｍ０ａ、Ｍ０ｂ）から（Ｍ１５ａ、Ｍ１５ｂ）まで、それぞれ２つのモジュールをまとめた１６個のグループで構成される。物理アドレス指定方式では、ＮＡＮＤ型フラッシュ・メモリ・システム１５０が１６個のチャネルまたはレーン（Ｌａｎｅ０からＬａｎｅ１５）を含むように、２つのモジュールからなる各グループが、「チャネル」と呼ばれることもある「レーン」を形成する。
【００３３】
好ましい実施形態では、個々の各レーンは、そのレーンを関連するフラッシュ制御装置１４０に結合する関連するバスをそれぞれ有する。したがって、フラッシュ制御装置１４０は、その通信を特定の通信バスのうちの１つに向けることによって、その通信をメモリ・モジュールのレーンのうちの１つに向けることができる。所与のレーンの各通信バスは、他のレーンの通信バスから独立しているので、フラッシュ制御装置１４０は、同時に様々な通信バスを横切ってコマンドを発行し、データを送信または受信することができ、それによりフラッシュ制御装置１４０は、個々のレーンに対応するフラッシュ・メモリ・モジュールに、同時に、または極めて同時に近いタイミングで、アクセスすることができる。
【００３４】
図５を参照すると、図２のフラッシュ・メモリ・モジュールＭ０ａからＭ１５ｂのうちのいずれかを実装するために利用することができるフラッシュ・メモリ・モジュール３００の例示的な実施形態が示してある。図５に示すように、フラッシュ・メモリ・モジュール３００によって提供される物理記憶位置は、チップ・イネーブル（ＣＥ）によってアドレス指定、または識別、あるいはその両方を行うことができる複数の物理位置にさらに細分される。図５のレイでは、各フラッシュ・メモリ・チップ３００の物理メモリは、４つのチップ・イネーブル（ＣＥ０、ＣＥ１、ＣＥ２、およびＣＥ３）に分割され、各チップ・イネーブルは、フラッシュ制御装置１４０によってアサートされて対応するＣＥ内の物理メモリ位置へのアクセス、またはそこからのアクセスを可能にする、それぞれのＣＥ線を有する。各ＣＥは、２つのプレーン（例えばＰｌａｎｅ０およびＰｌａｎｅ１）をそれぞれ有する複数のダイ（例えばＤｉｅ０およびＤｉｅ１）に細分される。各プレーンは、フラッシュ・メモリ・チップの物理レイアウト上、互いに物理的に関連付けられ、読取り動作および書込み動作など様々な動作の実行のために共通の回路（例えばＩ／Ｏバッファ）を利用する、ブロックの集合（後述）を表す。
【００３５】
図６から図７にさらに示すように、図３のフラッシュ・メモリ・モジュール３００内の任意のプレーンを実装するために利用することができる例示的なプレーン４００は、例えば、１０２４個または２０４８個の物理メモリ・ブロックを含む。なお、一部のブロックが早期に故障する可能性もあるので、製造業者がいくつかの追加のブロックをしばしば追加することに留意されたい。一般に、ブロックは、通常は物理的に互いに関連付けられた物理ページの集合である。この関連付けは、ブロックが、ＮＡＮＤ型フラッシュ・メモリ・システム１５０内で消去することができる物理記憶位置の最小単位として定義されるようになっている。図７の実施形態では、各ブロック５００は、例えば、２５６個または５１２個の物理ページを含み、ここで、物理ページは、読取りアクセスおよび書込みアクセスの個々にアドレス指定可能な最小データ単位として定義される。この例示的なシステムでは、データの各物理ページは、データ記憶用の共通容量（例えば１６ｋＢ）に、以下でさらに詳細に述べるメタデータ用の追加の記憶域を加えた容量を有する。したがって、データは、ページ単位でＮＡＮＤ型フラッシュ・メモリ・システム１５０に書き込まれる、またはＮＡＮＤ型フラッシュ・メモリ・システム１５０から読み取られるが、ブロック単位で消去される。
【００３６】
ＮＡＮＤ型フラッシュ・メモリ・システム１５０が、セルあたり複数ビットに対応するメモリ技術で実装される場合には、各ブロック５００の複数の物理ページを、同じメモリ・セルのセットに実装することは、一般的である。例えば、図７に示すようにブロック５００あたりの物理ページ数が５１２個であり、メモリ・セルあたり２ビットである（すなわち、ＮＡＮＤ型フラッシュ・メモリ１５０がＭＬＣメモリで実装される）と仮定すると、Ｐａｇｅ０からＰａｇｅ２５５（下位ページ）は、所与のメモリ・セルのセットの最初のビットを利用して実装することができ、Ｐａｇｅ２５６からＰａｇｅ５１１（上位ページ）は、同じ所与のメモリ・セルのセットの２番目のビットを利用して実装することができる。改ページと上位ページの実際の順序は、交互にすることもでき、製造業者によって決まる。多くの場合、ブロック５００内のページの書換え耐性（endurance）はばらつきが大きく、いくつかの場合に、このばらつきは、下位ページ（一般に低い書換え耐性を有する可能性がある）と上位ページ（一般に高い書換え耐性を有する可能性がある）の間で特に顕著である。
【００３７】
図７にさらに示すように、各ブロック５００は、そのブロック５００内の各物理ページの状態をリタイア（retired）（すなわちユーザ・データの記憶に使用されなくなっている）または非リタイア（non-retired）（アクティブである、またはユーザ・データの記憶に依然として使用可能である）として示す、ブロック状態情報（ＢＳＩ）５０２を含むことが好ましい。様々な実施態様で、ＢＳＩ５０２は、ブロック５００内で１つのデータ構造（例えばベクトルまたはテーブル）にまとめる、ブロック５００内で（例えば各物理ページに負荷された１ビットまたは複数ビットのメタデータとして）分散させる、またはデータ・ストレージ・システム１２０内の他の場所に維持する、あるいはそれらを組み合わせて行うことができる。１つの例として、以下でさらに説明する図９に示す実施形態では、ＮＡＮＤ型フラッシュ・メモリ・システム１５０内の全てのブロック５００のページ状態情報が、例えばＧＰＰメモリ１３４またはフラッシュ制御装置メモリ１４２に記憶されるページ状態テーブル（ＰＳＴ）９４６など、システム・レベルのデータ構造にまとめられる。
【００３８】
データ・ストレージ・システム１２０によって実装されるＦＴＬは、ホスト・デバイスが利用できるようになっている論理アドレス空間を、ＮＡＮＤ型フラッシュ・メモリ・システム１５０内の物理メモリから分離するので、ＮＡＮＤ型フラッシュ・メモリ・システム１５０のサイズは、ホスト・デバイスに対して提供される論理アドレス空間のサイズと同じである必要はない。ほとんどの実施形態では、利用可能な物理メモリ全体より小さい論理アドレス空間を提供すること（すなわちＮＡＮＤ型フラッシュ・メモリ・システム１５０をオーバプロビジョニングすること）は有利である。このようなオーバプロビジョニングにより、上述のように特定量の無効データがあっても、論理アドレス空間が全て利用されているときに物理メモリ資源が利用可能になることが保証される。まだリクレイムされていない無効データの他に、メモリ障害、ならびに誤り訂正符号（ＥＣＣ）、巡回冗長検査（ＣＲＣ）、およびパリティなどのデータ保護方式の使用に伴うメモリ・オーバヘッドがあっても、オーバプロビジョニング空間を使用して、十分な論理空間が存在することを保証することができる。
【００３９】
いくつかの実施形態では、データは、一度に１物理ページずつ、ＮＡＮＤ型フラッシュ・メモリ・システム１５０に書き込まれる。よりロバストなエラー回復が望ましい他の実施形態では、データは、本明細書で「ページ・ストライプ」と呼ぶ、ＮＡＮＤ型フラッシュ・メモリ・システム１５０の関連する物理ページのグループに書き込まれる。開示する実施形態では、ページ・ストライプの全てのページを異なるレーンと関連付けて、高い書込み帯域幅を実現する。多くの実装形態では、最小の消去単位がブロックであるので、図８に示すように、複数のページ・ストライプを１つのブロック・ストライプにグループ化することができる。図８では、ブロック・ストライプ内の各ブロックが、異なるレーンと関連付けられている。ブロック・ストライプが構築されると、レーンの任意の空きブロックを選択することができるが、同じブロック・ストライプ内の全てのブロックは、同じ、または同様の健康度（health grade）を有することが好ましい。なお、ブロックの選択は、同じプレーン、同じダイ、または同じチップ・イネーブル、あるいはそれらの組合せから行われるようにさらに制限される可能性もあることに留意されたい。ブロック・ストライプの長さは、様々であってよく、また様々であることが好ましいが、ＮＡＮＤ型フラッシュ・メモリ・システム１５０が１６個のレーンを含む１実施形態では、各ブロック・ストライプが２個から１６個のブロックを含み、各ブロックが異なるレーンに属する。様々な長さを有するブロック・ストライプの構造に関するさらなる詳細は、米国特許第８１７６２８４号、第８１７６３６０号、第８４４３１３６号、および第８６３１２７３号において見ることができ、それらは引用することによって、その全体が本明細書に組み込まれる。
【００４０】
各レーンのブロックが選択され、ブロック・ストライプが形成されたら、そのブロック・ストライプの全てのブロックの同じページ番号の物理ページで、ページ・ストライプを構成することが好ましい。ＮＡＮＤ型フラッシュ・メモリ・システム１５０に記憶される様々なページ・ストライプの長さは様々である可能性があり、また様々であることが好ましいが、１実施形態では、各ページ・ストライプは、１個から１５個のデータ・ページの書込みデータ（通常はホスト・デバイスから提供される）と、その書込みデータのためのデータ保護情報を記憶するために使用される１つの追加ページ（「データ保護ページ」）とを含む。例えば、図９は、Ｎ個のデータ・ページ（すなわちＤｐａｇｅ００からＤｐａｇｅＮ−１）と、１つのデータ保護ページ（すなわちＰｐａｇｅＮ）とを含む例示的なページ・ストライプ６１０を示している。データ保護ページは、非リタイア・ページを含むページ・ストライプの任意のレーンに配置することができるが、通常は、メタデータ情報を最小限にするために、同じブロック・ストライプの全てのページ・ストライプについて同じレーンに配置される。例示したようにデータ保護ページを追加するには、同じブロック・ストライプの全てのページ・ストライプについて同時にガベージ・コレクションを行う必要がある。ブロック・ストライプのガベージ・コレクションが完了した後で、ブロック・ストライプをディゾルブ（dissolve）することができ、各ブロックを、以下で説明するように関連する使用準備完了（ready-to-use）（ＲＴＵ）キューに配置することができる。ブロック・ストライプのページ・ストライプ内に配置されている論理データ・ページと同様に、フィンガプリントＭＤページも、そこに配置することができる。論理データ・ページおよびフィンガプリントＭＤページは、混合していてもよい。実際に、フラッシュ・カード１２６は、普通の論理データ・ページとフィンガプリントＭＤページとの間の違いを実際には知らないことがある。フィンガプリントＭＤページは、インタフェース・ノード１２２によって制御される専用メタデータ・ボリュームに記憶することができ、プロセッサ・システム１０２には見えないことがある。フラッシュ・カード１２６はボリュームについては全く知らないので、フィンガプリントＭＤページの動作は、普通の読取り動作および書込み動作として扱われる。
【００４１】
図１０は、図９のページ・ストライプ６１０内の各データ・ページに記憶されるコードワードの例示的なフォーマットを示す図である。通常は、正の整数のコードワード、例えば２つまたは３つのコードワードが、各データ・ページに記憶されるが、代替の実施形態では、１つのデータ・ページに１つのコードワードを記憶することもある。この例では、各コードワード７００は、データ・フィールド７０２と、データ・ページを記述するメタデータのための追加フィールドとを含む。コードワードのサイズに応じて、データ・フィールド７０２は、１つまたは複数の論理ページについてのデータを保持する。別の実施形態では、データ・フィールド７０２は、複数の論理データ・ページのデータの一部を保持することもある。図示の例では、メタデータ・フィールドは、コードワード７００に記憶されたＬＢＡを含むＬＢＡフィールド７０４と、データ・フィールド７０２およびＬＢＡフィールド７０４の組合せについて計算したＣＲＣ値を含むＣＲＣフィールド７０６と、図示の例ではデータ・フィールド７０２、ＬＢＡフィールド７０４、およびＣＲＣフィールド７０６の組合せから計算したＥＣＣ値を含むＥＣＣフィールド７０８とを含む。データ・フィールド７０２が論理データ・ページの一部を保持する場合には、ＬＢＡフィールド７０４は、論理データ・ページのどの部分がデータ・フィールド７０２に記憶されているかについての情報をさらに保持する。
【００４２】
図１１は、図９のページ・ストライプ６１０のデータ保護ページのコードワードの例示的なフォーマットを示す図である。１実施形態では、各データ保護ページは、正の整数のコードワードを記憶するが、代替の実施形態では、データ保護ページは、１つのコードワードしか記憶しないこともある。図示の例では、データ保護コードワード８００は、ページ・ストライプ６１０内のコードワード７００のデータ・フィールド７０２の内容のビットごとの排他的論理和（ＸＯＲ）を含むデータＸＯＲフィールド８０２を含む。データ保護コードワード８００は、ページ・ストライプ６１０内のコードワード７００のＬＢＡフィールド７０４のビットごとのＸＯＲをさらに含む。データ保護コードワード８００は、最後に、データ保護コードワード８００のＣＲＣ値およびＥＣＣ値をそれぞれ記憶する、ＣＲＣフィールド８０６およびＥＣＣフィールド８０８を含む。このような保護方式は、パリティ・フィールドが常に１つの特定のフラッシュ・プレーン上に位置するわけではないので、一般にＲＡＩＤ５と呼ばれる。ただし、別法として、またはこれに加えて、リード・ソロモンなどの代替のデータ保護方式を使用することもできることを理解されたい。
【００４３】
上述のデータ・ページおよびデータ保護ページのフォーマットは、複数の異なるデータ保護機構を使用してページ・ストライプに記憶されたデータを保護するものである。第１に、データ・ページの各データ・コードワードでＥＣＣビットを使用することにより、フラッシュ・ページ内のコードワード内のいくつかのビット・エラーを訂正することが可能になる。使用するＥＣＣ方法によっては、ＮＡＮＤ型フラッシュ・ページ内の数百のビット、または数千のビットを補正することができることもある。ＥＣＣ検査および訂正を実行した後で、訂正済みのＣＲＣフィールドを使用して、訂正データを妥当性検査する。これら２つの機構をともに使用することにより、比較的良性のエラーの訂正が可能になり、ローカルのページ間情報のみを使用して、より深刻なエラーを検出することが可能になる。例えばデータ・ページを記憶するために使用される物理ページの障害によって、訂正不可能なエラーがデータ・ページで発生した場合には、障害が発生したデータ・ページのデータ・フィールドおよびＬＢＡフィールドの内容を、ページ・ストライプのその他のデータ・ページおよびデータ保護ページから再構築することができる。
【００４４】
ページ・ストライプのデータ・ページおよびデータ保護ページが記憶される物理メモリ位置はＮＡＮＤ型フラッシュ・メモリ・システム１５０内で様々であるが、１実施形態では、所与のページ・ストライプを構成するデータ・ページおよびデータ保護ページは、データ・ストレージ・システム１２０全体の動作を最適化するように選択された物理メモリ位置に記憶されることが好ましい。例えば、１実施形態では、あるページ・ストライプを構成するデータ・ページおよびデータ保護ページは、それらのデータ・ページおよびデータ保護ページのそれぞれを記憶するために異なる物理レーンが利用されるように、記憶される。このような実施形態は、フラッシュ制御装置１４０が、そのページ・ストライプを構成する全てのデータ・ページに同時に、またはほぼ同時にアクセスすることができるので、効率的なページ・ストライプへのアクセスに対応している。なお、レーンへのページの割当ては、順番通りである必要はなく（すなわちデータ・ページは任意のレーンに任意の順序で記憶することができる）、ページ・ストライプが（例えば１５個のデータ・ページおよび１つのデータ保護ページを含む）完全長ページ・ストライプでない限り、このページ・ストライプを記憶するために利用されるレーンは、隣接していなくてもよい。
【００４５】
データ・ストレージ・システム１２０の１つの例示的な実施形態の概略的な物理的構造および動作について説明したが、次に、図１２を参照して、データ・ストレージ・システム１２０の特定の動作態様について説明する。図１２は、１実施形態による、ＧＰＰ１３２、またはフラッシュ制御装置１４０、あるいはその両方によって利用されるフラッシュ管理機能およびデータ構造を示すハイレベル流れ図である。
【００４６】
上述のように、データ・ストレージ・システム１２０は、一般的には、外部デバイスがＮＡＮＤ型フラッシュ・メモリ・システム１５０内の物理メモリ位置について、アドレス指定、またはアクセス、あるいはその両方を直接行うことを許さない。その代わりに、データ・ストレージ・システム１２０は、一般に、１つの連続した論理アドレス空間を外部デバイスに提供することにより、様々なＬＢＡに関連するデータが実際にはＮＡＮＤ型フラッシュ・メモリ・システム１５０を構成する物理メモリ位置内のどこにあるかをフラッシュ制御装置１４０およびＧＰＰ１３２が制御することを可能にしながら、ホスト・デバイスが論理アドレス空間内のＬＢＡからデータを読み取り、そこにデータを書き込むことを可能にする。このようにして、ＮＡＮＤ型フラッシュ・メモリ・システム１５０の性能および態様寿命を、知的に管理および最適化することができる。図示の実施形態では、各フラッシュ制御装置１４０は、関連するフラッシュ制御装置メモリ１４２に記憶することができる論理／物理変換（ＬＰＴ）テーブル９００などの論理／物理変換データ構造を使用して、論理／物理変換を管理する。上述のように、ＬＰＴテーブル９００などのＬＰＴテーブルは、ＮＡＮＤ型フラッシュ・メモリ・システム１５０に記憶されるデータ・ページの圧縮ページ・サイズを記憶して、データ複製を助けるように構成することもできる。
【００４７】
ＧＰＰ１３２で実行されるフラッシュ管理コードは、例えばＧＰＰメモリ１３４に記憶することができる、使用準備完了（ＲＴＵ）キュー９０６内で使用する準備ができているＮＡＮＤ型フラッシュ・メモリ・システム１５０の消去ブロックを追跡する。図示の実施形態では、ＧＰＰ１３２で実行される管理コードは、チャネルごとに１つまたは複数のＲＴＵキュー９０６を維持することが好ましく、再使用される各消去ブロックの識別子は、そのチャネルに対応するＲＴＵキュー９０６のうちの１つにエンキューされる。例えば、１実施形態では、ＲＴＵキュー９０６は、各チャネルについて、複数のブロック健康度のそれぞれについてそれぞれのＲＴＵキュー９０６を含む。様々な実装形態では、レーンごとに２つから８つのＲＴＵキュー９０６（および対応する数のブロック健康度）で十分であることが分かっている。
【００４８】
ＧＰＰ１３２で実行されるフラッシュ管理コードによって実行されるブロック・ストライプ構築機能９２０は、ＲＴＵキュー９０６にエンキューされた消去ブロックからデータおよび関連するパリティ情報を記憶するための新たなブロック・ストライプを構築するものである。図８を参照して上述したように、ブロック・ストライプは、異なるチャネルに存在する同じまたは同様の健康度（すなわち予想される残りの有効寿命）を有するブロックで構成されることが好ましい。つまり、ブロック・ストライプ構築機能９２０は、異なるチャネルの対応するＲＴＵキュー９０６から新たなブロック・ストライプの各ブロックを引き出すことによってブロック・ストライプを構築することができるので好都合である。その後、この新たなブロック・ストライプを、データ配置のためにフラッシュ制御装置１４０のキューに入れる。
【００４９】
プロセッサ・システム１０２などのホストから受信した書込みＩＯＰに応答して、フラッシュ制御装置１４０のデータ配置機能９１０は、ＬＰＴテーブル９００を参照することにより、書込み要求に示されている目標ＬＢＡ（１つまたは複数）が現在ＮＡＮＤ型フラッシュ・メモリ・システム１５０内の物理メモリページ（１つまたは複数）にマッピングされているかどうかを判定し、マッピングされている場合には、目標ＬＢＡに現在関連付けられている各データ・ページの状態を変更して、それが有効ではなくなっていることを示す。さらに、データ配置機能９１０は、必要な場合に、その書込みＩＯＰの書込みデータ、およびその書込みＩＯＰの対象となっている既存のページ・ストライプがあればそのページ・ストライプの任意の更新されていないデータ（すなわち、書込み要求が論理ページより小さい場合には、依然として、リード・モディファイ・ライトで扱う必要がある有効なデータがある）を記憶するためにページ・ストライプを割り当てる、またはその書込みＩＯＰの書込みデータ、およびその書込みＩＯＰの対象となっている既存のページ・ストライプがあればそのページ・ストライプの任意の更新されていない（すなわち依然として有効な）データを、空きスペースが残っている既に割り当てられているページ・ストライプに記憶する、あるいはその両方を行う。ページ・ストライプは、データを保持するために既に割り当てられているブロック・ストライプ、またはブロック・ストライプ構築機能９２０によって構築された新たなブロック・ストライプから割り当てることができる。好ましい実施形態では、ページ・ストライプの割当ては、割当てに利用可能なブロックの健康、および書込みデータのＬＢＡの「熱」（すなわち推定または測定した書込みアクセス頻度）に基づいて行うことができる。次いで、データ配置機能９１０は、ページ・ストライプの各ページの各コードワードの書込みデータと、関連するメタデータ（例えばＣＲＣ値およびＥＣＣ値）と、そのページ・ストライプのパリティ情報とを、割り当てられたページ・ストライプに書き込む。関連するメタデータおよびパリティ情報は、十分なホスト・データがページ・ストライプ内に配置されると直ちにストレージに書き込むことができる。フラッシュ制御装置１４０も、ＬＰＴテーブル９００を更新して、書込みデータを記憶するために利用される物理ページ（１つまたは複数）を、ホスト・デバイスが示すＬＢＡ（１つまたは複数）と関連付ける。その後、フラッシュ制御装置１４０は、図１２にさらに示すように、ＬＰＴテーブル９００を参照することによって、そのデータにアクセスして、ホスト読取りＩＯＰにサービスすることができる。
【００５０】
ブロック・ストライプの全てのページが書き込まれたら、フラッシュ制御装置１４０は、そのブロック・ストライプを、ＧＰＰ１３２で実行されるフラッシュ管理コードがガベージ・コレクションを容易にするために利用する、使用中のブロック・キュー９０２のうちの１つに配置する。上述のように、書込みプロセス中には、ページは無効化されるので、ＮＡＮＤ型フラッシュ・メモリ・システム１５０の一部分は、未使用になる。関連するフラッシュ制御装置１４０（またはＧＰＰ１３２、あるいはその両方）は、最終的に、ガベージ・コレクタ９１２によって実行されるガベージ・コレクションによって、このスペースをリクレイムする必要がある。ガベージ・コレクタ９１２は、例えばブロック・ストライプ内のブロックの健康、および消去ブロック内のデータのどれくらいが無効であるかなど、いくつかの要因に基づいて、特定のブロック・ストライプをガベージ・コレクション用に選択する。図示の例では、ガベージ・コレクションは、ブロック・ストライプ全体について実行され、ＧＰＰ１３２で実行されるフラッシュ管理コードは、関連するフラッシュ制御装置メモリ１４２またはＧＰＰメモリ１３４に好都合に実装することができる、再配置キュー９０４内でリサイクルの準備ができているブロック・ストライプのログをとる。
【００５１】
ＧＰＰ１３２またはフラッシュ制御装置１４０によって実行されるフラッシュ管理機能は、再配置キュー９０４にエンキューされたブロック・ストライプに保持される依然として有効なデータを再配置する再配置機能９１４をさらに含む。このようなデータを再配置するために、再配置機能９１４は、データ配置機能９１０に再配置書き込み要求を発行して、古いブロック・ストライプのデータをＮＡＮＤ型フラッシュ・メモリ・システム１５０内の新たなブロック・ストライプに書き込むことを要求する。さらに、再配置機能９１４は、ＬＰＴテーブル９００を更新して、データの論理アドレスと物理アドレスの現在の関連付けを除去する。依然として有効なデータが全て古いブロック・ストライプから移動したら、この古いブロック・ストライプを、ブロック・ストライプ・ディゾルブ機能９１６に渡す。ブロック・ストライプ・ディゾルブ機能９１６は、古いブロック・ストライプをその構成ブロックに分解することによって、それらのブロック同士を解離させる。次いで、フラッシュ制御装置１４０は、ディゾルブしたブロック・ストライプをそれまで形成していたブロックのそれぞれを消去し、Ｐ／Ｅサイクル・カウント９４４のそのブロックについての関連するプログラム／消去（Ｐ／Ｅ）サイクル・カウントを増分する。消去した各ブロックの健康メトリクスに基づいて、消去した各ブロックは、ＧＰＰ１３２で実行されるフラッシュ管理機能の中のブロック・リタイア機能９１８によってリタイア状態になる（すなわちユーザ・データを記憶するために使用されなくなる）、またはそのブロックの識別子を関連するＧＰＰメモリ１３４内の適当な使用準備完了（ＲＴＵ）キュー９０６に入れることによって再利用に備えて準備される。
【００５２】
図１２にさらに示すように、ＧＰＰ１３２で実行されるフラッシュ管理機能は、バックグラウンド・ヘルス・チェッカ（background health checker）９３０を含む。バックグラウンド・ヘルス・チェッカ９３０は、プロセッサ・システム１０２などのホストの要求する読取りおよび書込みＩＯＰから独立して動作するものであり、使用中のブロック・キュー９０２に記録されているブロック・ストライプに属するブロックについて、１つまたは複数のブロック健康メトリクス９４２を連続的に決定する。この１つまたは複数のブロック健康メトリクス９４２に基づいて、バックグラウンド・ヘルス・チェッカ９３０は、再配置機能９１４で扱われる再配置キュー９０４にブロック・ストライプを入れることができる。
【００５３】
次に図１３を参照すると、１実施形態によるフラッシュ制御装置１４０を示す、より詳細な図が示してある。この実施形態では、フラッシュ制御装置１４０は、例えばブロックごとではなくページごとに、またはその両方を組み合わせて、ＮＡＮＤ型フラッシュ・メモリ・システム１５０のフラッシュ・メモリ・モジュールＭ０ａ、Ｍ０ｂ、Ｍ１ａ、Ｍ１ｂ、…、Ｍ１５ａ、およびＭ１５ｂのメモリのリタイアをサポートするように（例えばハードウェア、ファームウェア、ソフトウェア、またはそれらの何らかの組合せによって）構成される。フラッシュ制御装置１４０は、さらに、メモリの物理ページをリタイアさせる一方で、そのリタイアさせた物理ページと共通の複数ビットメモリ・セルのセットを共有するその他の物理ページ（１つまたは複数）はアクティブに保つように構成することができる。
【００５４】
図示の実施形態では、フラッシュ制御装置１４０は、関連するＮＡＮＤ型フラッシュ・メモリ・システム１５０に書き込まれたデータに１つまたは複数のデータ圧縮アルゴリズムを選択的に適用する圧縮器１０００と、ＮＡＮＤ型フラッシュ・メモリ・システム１５０から読み取られた圧縮データを圧縮解除する圧縮解除器１００２と、データ・スクランブラ１００４とを含む。フラッシュ制御装置１４０は、また、インタフェース・ノード１２２のフィンガプリント・エンジン１１８と同様の任意選択のフィンガプリント・エンジン１００６を含むこともある。フラッシュ制御装置１４０は、データ・スクランブラ１００４を利用して、ＮＡＮＤ型フラッシュ・メモリ１５０に書き込まれたデータに所定のデータ・スクランブル（すなわちランダム化）パターンを適用して、書換え耐性を改善し、セル間干渉を軽減する。
【００５５】
図１３にさらに示すように、フラッシュ制御装置１４０は、書込みキャッシュ１０１０を含む。書込みキャッシュ１０１０は、ＮＡＮＤ型フラッシュ・メモリ・システム１５０へのデータの書込みを予期してその書込みデータをバッファするための１つまたは複数のキャッシュ線１０１２のための記憶域を含む。図示の実施形態では、各キャッシュ線１０１２は、複数の（例えば１６個の）セグメント１０１４ａから１０１４ｐを含み、各セグメントは、最大１６個のデータ・ページ（最大で１５個のデータ・ページおよび１つのデータ保護ページ）からなるそれぞれのページ・ストライプのための記憶域を提供する。図示のように、実装を容易にするために、フラッシュ制御装置１４０は、キャッシュ線１０１２の所与のセグメント１０１４にバッファされた各ページを、１６個のフラッシュ・メモリ・モジュールのそれぞれの対応するダイ索引、プレーン索引、および物理ページ索引に書き込むと好ましい。したがって、例えば、フラッシュ制御装置１４０は、セグメント１０１４ａのデータ・ページを、フラッシュ・メモリ・モジュールＭ０ａからＭ１５ａのそれぞれの最初の物理ページ（例えばＰａｇｅ２３）に書き込み、セグメント１０１４ｂのデータ・ページを、フラッシュ・メモリ・モジュールＭ０ａからＭ１５ａのそれぞれの２番目の物理ページに書き込み、セグメント１０１４ｐのデータ・ページを、フラッシュ・メモリ・モジュールＭ０ａからＭ１５ａのそれぞれの１６番目の物理ページに書き込む。
【００５６】
図１４および図１５を参照すると、適応符号化をそれぞれ実施する例示的な従来の圧縮器１１００および例示的な従来の圧縮解除器１１５０が、ブロック図で示してある。なお、本開示に従って構成されたデータ・ストレージ・システムでは、従来の圧縮器１１００が圧縮器１０００で置換され、従来の圧縮解除器１１５０が圧縮解除器１００２で置換されることを理解されたい。圧縮器１１００および圧縮解除器１１５０は、それぞれ、全ての以前のシンボル（ｙ（１）、ｙ（２）、…、ｙ（ｔ−１））を検査して、次のシンボルｙ（ｔ）の値に関する予測のセットＰｒ（ｙ（ｔ））を作成する、予測器１１０２を含む。算術エンコーダ１１０４は、この予測のセットＰｒ（ｙ（ｔ））および受信した入力シンボルに基づいて出力ストリームを作成する。ここで、各入力シンボルは、ｌｏｇ［１／Ｐｒ（ｙ（ｔ））］ビットで表される。予測器１１０２による予測が良好である場合（すなわちＰｒ（ｙ（ｔ））＞１／Ｋである場合。ここで、「Ｋ」は、１つのアルファベット中のシンボルの数である）には、出力ストリームで圧縮が行われる。なお、この圧縮プロセスを正確に反転するためには、圧縮解除器１１５０の予測器１１０２によって作成される予測のセットＰｒ（ｙ（ｔ））が、圧縮器１１００の予測器１１０２によって作成される予測のセットと正確に同じでなければならないことを理解されたい。圧縮解除器１１５０の予測器１１０２の出力は、算術デコーダ１１５４に入力として提供され、算術デコーダ１１５４が、圧縮された入力ストリームを復号して、その入力に基づく圧縮解除シンボルを生成する。
【００５７】
図１６を参照すると、コンテキスト・ミキシングによって予測を実行する例示的な従来の予測器１２００が、ブロック図で示してある。予測器１２００は、次のシンボルの値に関する予測をそれぞれ作成する「ｍ」個の異なるモデルのアンサンブルと、全てのモデルからの予測を組み合わせて最終予測にするミキサ１２０４とを含む。ミキサ１２０４は、例えば、以下のようにモデル予測の平均をとることもある。
Ｐｒ（ｙ（ｔ）＝ｋ）＝１／ｍ＊［ｐ１（ｙ（ｔ）＝ｋ）＋ｐ２（ｙ（ｔ）＝ｋ）＋…＋ｐｍ（ｙ（ｔ）＝ｋ）］
【００５８】
図１７を参照すると、ロジスティック・ミキシングを実行する例示的な従来のミキサ１３００が、ブロック図で示してある。ロジスティック・ミキシングは、確率的勾配降下法によって重みを最適化するロジスティック回帰と等価である。ただし、ロジスティック・ミキシングは、Ｋ＝２についてのみ定義される。モデル予測ｐｉ＝ｐｉ（ｙ（ｔ））から、特徴ベクトルｘ（ｔ）は、以下のように計算される。
【数１】
2020510931.tif 000003
重みベクトルθ＝（θ１、θ２、…、θｍ）とすると、最終予測は、以下のように計算することができる。
【数２】
2020510931.tif 000004
【００５９】
既知の通り、スカッシュ関数は、ニューラル・ネットワークで使用される一般的なロジスティック関数である。この場合、以下のように、圧縮を最大にするように、例えば確率的勾配降下法（ＳＧＤ）を使用して重みベクトルを調節することができる。
【数３】
2020510931.tif 000005
ここで、αは、勾配降下のステップの大きさのパラメータである。
【００６０】
本開示の様々な実施形態は、Ｋ＞２のサイズのアルファベットに属するシンボルに対して動作する算術エンコーダ／デコーダを含む、非２値の最大エントロピーのコンテキスト・ミキシング圧縮器／圧縮解除器を対象としている。１つまたは複数の実施形態によれば、圧縮器／圧縮解除器は、符号化対象の次のシンボルの値に関する予測を作成するコンテキスト・モデル・アンサンブル（すなわち複数のコンテキスト・モデル）と、コンテキスト・モデル予測から特徴行列ｘ（ｔ）を作成して、最終予測を作成する最大エントロピー分類器を（例えば確率的勾配降下法（ＳＧＤ）を用いて）訓練するミキサとを含む。ミキサによる最終予測は、算術エンコーダ／デコーダに入力として提供される。なお、最大エントロピー分類器に異なる数の制約を課すことにより（それにより異なる数のミキシング重みを生じることにより）、異なる実施形態を実施することができることを理解されたい。なお、ＳＧＤ以外の訓練技術を使用して、分類器を訓練することもできることを理解されたい（例えば、ミニ・バッチ勾配降下法または雑音対照推定を使用して分類器を訓練することもできる）。一般に、唯一の制約は、圧縮器において予測Ｐｒ（ｙ（ｔ）｜ｘ（ｔ））を形成するために使用される重みは、圧縮解除器でも全く同じ訓練を行うことができるように、シンボルｙ（１）、…、ｙ（ｔ−１）の知識を用いて訓練される、というものである。１つの例として、ニューラル・ネットワーク・ミキサは、最大エントロピー・ミキサを複数層にチェーニングすることによって構築することができる。
【００６１】
本開示の１つまたは複数の実施形態によれば、一般的なＫ＞２についてのストレッチ関数を以下のように再定義する非２値最大エントロピー・コンテキスト・ミキシング圧縮器／圧縮解除器が開示される。
【数４】
2020510931.tif 000006
【００６２】
なお、基礎となる概念は、（全てのシンボルの確率の合計が１になることから）モデルから生じる冗長情報を除去するということであることを理解されたい。また、必ずしもシンボル「Ｋ」で割る必要はない、すなわちシンボルが固定されているのであれば、どのようなシンボルで割ってもよいことも理解されたい。
この場合、一般化した特徴行列ｘ（ｔ）は、以下で与えられる。
【００６３】
【数５】
2020510931.tif 000007
１つまたは複数の実施形態によれば、最大エントロピー・ミキサは、以下の形態をとることがある。
【数６】
2020510931.tif 000008
ここで、ｆθ（ｋ，ｘ（ｔ））は、この特徴行列の成分の何らかの１次結合であり、Ｚは、正規化定数と呼ばれるスカラーである。
【００６４】
図１８を参照すると、図１３の圧縮器１０００がさらに詳細に示してある。図示のように、圧縮器１０００は、その出力がニューラル・ネットワーク・ミキサ１４００の入力に提供される、いくつかのコンテキスト・モデルを含む（図１８には、そのうちの８個のみを示す）。学習予測が、ミキサ１４００から算術エンコーダ１４０２に提供されて、入力シンボルからの圧縮データの生成を容易にしている。
【００６５】
図１９を参照すると、テーブル１５００は、本開示による、若干異なる制約下でエントロピーを最大にする３つの異なる実施形態、すなわち実施形態「Ａ」、「Ｂ」、および「Ｃ」の数式を示している。実施形態「Ｃ」の予測器は、Matternによって導出された予測器と同じ機能的形態を有する（Mattern, C.,"Mixing Strategies in Data Compression", in Data Compression Conference (DCC), 2012, pp.337-346参照）。ただし、Matternの予測器では、重みθｉは、非ゼロであり、合計が１になる必要があった。それに対して、ここで開示する最大エントロピー・ミキサでは、重みθｉが、非ゼロであり、合計が１になる必要はない。実施形態「Ａ」では、最小数の制約を課すので、最大数のミキシング重みが生じる。実施形態「Ａ」は、モデルによって提供される全ての情報を使用して最終予測を形成するので、常に最高の圧縮率を提供するはずである。特に、実施形態「Ａ」は、上記の参考文献でMatternによって定義されている圧縮器より高い圧縮比を実現することができる。
【００６６】
図２０を参照すると、ミキサ１４００が、Ｋ＝４とした実施形態「Ａ」の最大エントロピー・ミキサはとして実施されている。以下のように、学習しなければならない重みの総数は、３＊３＊ｍ＝９＊ｍである。
【００６７】
【数７】
2020510931.tif 000009
【００６８】
図示のように、ミキサ１４００は、特徴行列ｘ（ｔ）を計算する特徴行列計算ブロックと、特徴行列要素と関連する重みとのドット積を算出する「Ｋ−１」個のドット積ブロックと、ドット積の結果についてｅ＾（ドット積）を算出する「Ｋ−１」個の自然指数関数（Ｅｘｐ）ブロックと、正規化定数を計算し、次いで学習予測（Ｐｒ（ｙ（ｔ）））を作成するＺ計算ブロックとを含む。Ｋ＝２（すなわち１ビット・シンボル）についての２５６×１ＭＢのサンプルのデータセットのシミュレーションでは、従来の２値コンテキスト・ミキシング圧縮を用いるシングル・コア・プロセッサで、１．３８ＭＢ／ｓのスループットで８．０４の圧縮率（ＣＲ）が得られた。同じデータセットについて、Ｋ＝４（すなわち２ビット・シンボル）とした実施形態「Ｃ」のシミュレーションでは、２．１１ＭＢ／ｓのスループットで８．１１のＣＲが得られた。これは、従来の２値コンテキスト・ミキシング圧縮（すなわちＫ＝２）の場合と比較して、約４３パーセント速い圧縮に相当する。同じデータセットについて、Ｋ＝４とした実施形態「Ａ」のシミューレションでは、１．６３ＭＢ／ｓのスループットで８．２１のＣＲが得られた。これは、従来の２値コンテキスト・ミキシング圧縮と比較して約２パーセント高いＣＲに相当する。
【００６９】
図２１を参照すると、本開示の実施形態によるデータ・ストレージ・システムの圧縮をデータ・ページに対して実行する例示的なプロセス１７００が示してある。１つまたは複数の実施形態では、プロセス１７００は、ブロック１７０１で、フラッシュ制御装置１４０の圧縮器１０００によって、書込みＩＯＰ（例えばいくつかのシンボルを有する４ｋＢデータ・ページ）が受信されたときに開始される。別の実施形態では、プロセス１７００は、フラッシュ制御装置１４０の圧縮器１０００によって、バックグラウンド圧縮要求に応答して開始されることもある。次に、判定ブロック１７０２で、フラッシュ制御装置１４０は、ＩＯＰがフラッシュ・カード１２６にデータ・ページを書き込む要求（すなわち書込みＩＯＰ）またはバックグラウンド圧縮要求に対応するかどうかを判定する。受信したＩＯＰがデータ・ページ書込み要求またはバックグラウンド圧縮要求に対応しない場合には、その受信ＩＯＰに応答して、制御はブロック１７０２からブロック１７１４に移り、ブロック１７１４で、プロセス１７００は終了する。受信したＩＯＰがデータ・ページ書込み要求またはバックグラウンド圧縮要求に対応する場合には、その受信ＩＯＰに応答して、制御はブロック１７０４に移る。ブロック１７０４で、圧縮器１０００は、符号化対象のデータ・ページの次のシンボルの値に関するモデル予測を生成する。次に、ブロック１７０６で、圧縮器１０００は、それらのモデル予測の最終予測のセットを生成する。次いで、ブロック１７０８で、圧縮器１０００は、受信入力シンボルおよび最終予測のセットに基づいて、圧縮データを生成する。次に、ブロック１７１０で、圧縮器１０００は、モデル統計を更新し、ミキシング重みを調節する。次いで、判定ブロック１７１２で、圧縮器１０００は、データ・ページが圧縮を必要とする別のシンボルを含むかどうかを判定する。データ・ページが圧縮を必要とする別のシンボルを含む場合には、それに応答して、制御はブロック１７１２からブロック１７０４に移る。データ・ページが圧縮を必要とする別のシンボルを含まない場合には、それに応答して、制御はブロック１７１２からブロック１７１４に移り、ブロック１７１４で、プロセス１７００は終了する。
【００７０】
図２２を参照すると、本開示の実施形態によるデータ・ストレージ・システムの圧縮解除をデータ・ページに対して実行する例示的なプロセス１８００が示してある。１つまたは複数の実施形態では、プロセス１８００は、ブロック１８０１で、フラッシュ制御装置１４０の圧縮解除器１００２によって、読取りＩＯＰが受信されたときに開始される。別の実施形態では、プロセス１８０は、フラッシュ制御装置１４０の圧縮解除器１００２によって、バックグラウンド圧縮解除要求に応答して開始されることもある。次に、判定ブロック１８０２で、フラッシュ制御装置１４０は、ＩＯＰがフラッシュ・カード１２６からデータ・ページを読み取る要求（すなわち読取りＩＯＰ）またはバックグラウンド圧縮解除要求に対応するかどうかを判定する。受信したＩＯＰがデータ・ページ読取り要求またはバックグラウンド圧縮解除要求に対応しない場合には、その受信ＩＯＰに応答して、制御はブロック１８０２からブロック１８１４に移り、ブロック１８１４で、プロセス１８００は終了する。受信したＩＯＰがデータ・ページ読取り要求またはバックグラウンド圧縮解除要求に対応する場合には、その受信ＩＯＰに応答して、制御はブロック１８０４に移る。ブロック１８０４で、圧縮解除器１００２は、復号対象の次のシンボルの値に関するモデル予測を生成する。次に、ブロック１８０６で、圧縮解除器１００２は、それらのモデル予測の最終予測のセットを生成する。次いで、ブロック１８０８で、圧縮解除器１００２は、圧縮データおよび最終予測のセットに基づいて、受信入力シンボルを生成する。次に、ブロック１８１０で、圧縮解除器１００２は、モデル統計を更新し、ミキシング重みを調節する。次いで、判定ブロック１８１２で、圧縮解除器１００２は、データ・ページ中の別のシンボルが圧縮解除を必要としているかどうかを判定する。データ・ページ中の別のシンボルが圧縮解除を必要としている場合には、それに応答して、制御はブロック１８１２からブロック１８０４に移る。データ・ページ中の別のシンボルが圧縮解除を必要としていない場合には、それに応答して、制御はブロック１８１２からブロック１８１４に移り、ブロック１８１４で、プロセス１８００は終了する。
【００７１】
一般に、ＰＡＱの新しいバージョン（例えばＰＡＱ８以降）は、５００を超える異なるコンテキスト・モデルの予測を混合して、比較的高い圧縮率を実現する。残念ながら、ＰＡＱ８アルゴリズムは、少なくとも部分的には、利用するコンテキスト・モデルが多数であるという理由から非常に低速である。一般に、ＰＡＱ８で使用ＳＲ得るコンテキスト・モデルのアンサンブルは、多くの異なるタイプのデータに対して高い圧縮を提供するように設計され、例えば画像、音声、テキストなど幅広いデータ・タイプ用に設計された多数の専用コンテキスト・モデルを含む。
【００７２】
データ・シンボルｙ（ｔ）についての予測を行うために、各コンテキスト・モデルは、最初に、そのコンテキスト・モデルがそれまでに見たデータ・シンボル、すなわちシンボルｙ（１）、ｙ（２）、…、ｙ（ｔ−１）に基づいて、Ｐビット・コンテキストを計算する。２つの例示的なコンテキスト関数に、以下のようなものがある。
ＣＸＴ１（ｙ（１）、ｙ（２）、…、ｙ（ｔ−１））＝ｈａｓｈ［ｙ（ｔ−４）、ｙ（ｔ−３）、ｙ（ｔ−２）、ｙ（ｔ−１）］∈［０，２Ｐ−１］
ＣＸＴ２（ｙ（１）、ｙ（２）、…、ｙ（ｔ−１））＝ｈａｓｈ［ｙ（ｔ−７）、ｙ（ｔ−５）、ｙ（ｔ−３）、ｙ（ｔ−１）］∈［０，２Ｐ−１］
上記に示すように、コンテキスト関数ＣＸＴ１およびＣＸＴ２は両方とも、特定のシンボルについてハッシュ関数を実行する。
【００７３】
典型的な実施態様では、Ｐビット・コンテキスト（ＣＸＴ）は、「Ｋ」個のカウンタ、すなわちＮ１（ＣＸＴ）、Ｎ２（ＣＸＴ）、…、Ｎｋ（ＣＸＴ）を取り出すことができる、メモリ内のアドレスを指している。Ｎｋ（ＣＸＴ）、は、ｋ番目のシンボルがコンテキスト内で観察された回数をカウントしたものである。この場合、データ・シンボルｙ（ｔ）についての予測は、以下のように計算することができる。
【数８】
2020510931.tif 000010
【００７４】
本開示の１つまたは複数の態様によれば、顧客作業負荷が通常は特定の種類のデータ（例えばフォーマット化されたデータベース・レコード）からなるということを考慮して、コンテキスト・モデル・アンサンブルの調整を容易にして、圧縮／圧縮解除の速度を上げる。本開示の１実施形態によれば、比較的小さなコンテキスト・モデル・アンサンブルを設計する反復型技術を実施する。この反復型技術は、比較的高い圧縮率（ＣＲ）を維持しながら、Ｍ個のコンテキスト・モデルの大きなセットをＭ’個の所望のコンテキスト・モデルのサブセットに縮小する（Ｍ’＜Ｍ）。コンテキスト・モデル・アンサンブルのサイズを縮小するこうした技術は、オフラインで実施してもよいし、あるいは（例えばファームウェアで）バックグラウンド・プロセスとして実行して、コンテキスト・ミキシング圧縮器／圧縮解除器で使用されるコンテキスト・モデルのアンサンブルを様々な変化する顧客作業負荷に適応させることもできる。
【００７５】
一例として、圧縮器のためのコンテキスト・モデル選択の反復型プロセスは、「Ｎ」個の未選択のモデルおよび「０」個の選択済みモデルのセットから開始することがある。最初に、圧縮器を「Ｎ」回動作させ、その度に可能なモデルのうちの１つを起動し、どのモデルが最良の圧縮比（ＣＲ）を生じるかを判定する。次いで、最良のＣＲを生じるコンテキスト・モデルを、コンテキスト・モデルのアンサンブルまたはセットに含める。圧縮器を「Ｎ」回動作させた後は、「Ｎ−１」個の未選択のコンテキスト・モデルおよび１つの選択済みのコンテキスト・モデルのセットとなる。次いで、「Ｎ−１」個の残りのコンテキスト・モデルについて圧縮器を動作させ、（「Ｎ−１」個の残りのコンテキスト・モデル内の）どのコンテキスト・モデルが、選択済みのコンテキスト・モデルのセットに追加されたときに最高のＣＲを生じるかについて判定する。次いで、そのモデルをセットに追加する。所望数のモデルが特定されるまで、このプロセスを繰り返す。このプロセスは、例えば、フラッシュ・システム内でバックグラウンド・プロセスとして実行して、選択したコンテキスト・モデルを顧客作業負荷に適応させることもできる。一例として、８×１ＭＢサンプルのデータセットを用いるシミュレーションでは、ＰＡＱ８ｌは、５５２個のコンテキスト・モデルを実施し、ＣＲは９．００、スループットは０．０２ＭＢ／ｓであった。これに対して、本明細書に記載する開示するコンテキスト・モデル縮小プロセスを８個のコンテキスト・モデルを有するデータセットについて実施すると、ＣＲは８．３６、スループットは２．１１ＭＢ／ｓであった。コンテキスト・モデル・アンサンブルのサイズを５５２から８に減少させることで、ＣＲはわずかしか低下させずに、スループットが劇的に高くなったことが理解されるであろう。
【００７６】
図２３を参照すると、本開示の実施形態による、データ・ストレージ・システムでデータ圧縮／圧縮解除に使用される縮小コンテキスト・モデル・アンサンブルを顧客作業負荷に基づいて決定する例示的なプロセス１９００が示してある。プロセス１９００は、例えば、フラッシュ制御装置１４０によって実施することができる。プロセス１９００は、ブロック１９０１で、フラッシュ制御装置１４０によってバックグラウンド・プロセスとして定期的に開始することができる。次に、判定ブロック１９０２で、フラッシュ制御装置１４０は、縮小コンテキスト・モデルが示されているかどうか、例えば新たな顧客作業負荷が開始されているかどうかを判定する。ブロック１９０２で、縮小コンテキスト・モデルが示されていない場合には、それに応答して、制御はブロック１９２４に移り、ブロック１９２４で、プロセス１９００は終了する。ブロック１９０２で、縮小コンテキスト・モデルが示されている場合には、それに応答して、制御はブロック１９０４に移り、ブロック１９０４で、フラッシュ制御装置１４０が、（コンテキスト・モデルのアンサンブルを表す）セットＳを初期化する。
【００７７】
次に、ブロック１９０６で、フラッシュ制御装置１４０は、ゼロに等しい変数「Ｎ」を設定する。なお、「Ｎ」は、現在のコンテキスト・モデルを表すことを理解されたい。一例で、「Ｎ」がゼロに等しい場合には、「コンテキスト・モデル０」が示される。別の例で、「Ｎ」が６００に等しい場合には、「コンテキスト・モデル５００」が示される。次いで、判定ブロック１９０８で、フラッシュ制御装置１４０は、コンテキスト・モデルＮが既にセットＳ内にあるかどうかを判定する。セットＳはブロック１９０４で初期化されているので、セットＳは空であり、制御はブロック１９０８からブロック１９１４に移り、ブロック１９１４で、コンテキスト・モデルＮ（すなわちコンテキスト・モデル０）がセットＳ’に追加される。次に、ブロック１９１６で、フラッシュ制御装置１４０は、セットＳ’を用いて訓練データ（顧客作業負荷の代表サンプル）についての圧縮率（ＣＲ）を測定し、記録する。次いで、ブロック１９１０で、フラッシュ制御装置１４０は、「Ｎ」を１だけ増分する（すなわちＮ＝Ｎ＋１）。
【００７８】
次に、判定ブロック１９１２で、フラッシュ制御装置１４０は、「Ｎ」が「Ｍ」に等しいかどうかを判定する（ここで、「Ｍ」は、縮小していないコンテキスト・モデル・アンサンブル内のコンテキスト・モデルの総数に対応する）。ブロック１９１２で、「Ｎ」が「Ｍ」に等しくない場合には、それに応答して、制御はブロック１９０８に戻り、ブロック１９０８で、フラッシュ制御装置１４０は、コンテキスト・モデル「Ｎ＋１」がセットＳ内にあるかどうかを判定する。プロセス１９００は最近初期化されているので、コンテキスト・モデル「Ｎ＋１」はセットＳ内にはなく、制御は、ブロック１９０８からブロック１９１４に移り、そこからブロック１９１６に移り、そこからブロック１９１０に移り、そこからブロック１９１２に移る。ブロック１９１２で、最終的に「Ｎ」が「Ｍ」に等しくなると、それに応答して、制御はブロック１９１８に移る。ブロック１９１８で、フラッシュ制御装置１４０は、セットＳ’内でＣＲの最大の増加をもたらす「Ｎ」（すなわちコンテキスト・モデルＮ）を特定し、ＣＲの最大の増加をもたらすコンテキスト・モデルＮをセットＳに追加する。
【００７９】
ブロック１９１８から、制御は、判定ブロック１９２０に移る。ブロック１９２０で、フラッシュ制御装置１４０は、縮小コンテキスト・モデル・アンサンブルの所望のサイズに到達したかどうか（すなわち十分なコンテキスト・モデルがセットＳに追加されたかどうか）を判定する。一例では、縮小コンテキスト・モデル・アンサンブルの所望のサイズは、所望の最小ＣＲおよびスループットを実現することに基づいて決定することができる。ブロック１９２０で、縮小コンテキスト・モデル・アンサンブルの所望のサイズに到達していない場合には、それに応答して、制御はブロック１９０６に移り、もう一度反復して、別のコンテキスト・モデルをセットＳに追加する。ブロック１９２０で、縮小コンテキスト・モデル・アンサンブルの所望のサイズに到達している場合には、それに応答して、制御はブロック１９２４に移り、ブロック１９２４で、プロセス１９００は終了する。
【００８０】
本発明は、システム、方法、またはコンピュータ・プログラム製品、あるいはそれらの組合せであり得る。コンピュータ・プログラム製品は、本発明の様々な態様をプロセッサに実行させるコンピュータ可読プログラム命令を有するコンピュータ可読ストレージ媒体（１つまたは複数）を含み得る。
【００８１】
コンピュータ可読ストレージ媒体は、命令実行デバイスが使用する命令を保持および記憶することができる有形デバイスとすることもできる。コンピュータ可読ストレージ媒体は、これらに限定されるわけではないが、例えば、電子ストレージ・デバイス、磁気ストレージ・デバイス、光学ストレージ・デバイス、電磁気ストレージ・デバイス、半導体ストレージ・デバイス、またはそれらの任意の適当な組合せである可能性がある。コンピュータ可読ストレージ媒体のさらに詳細な例を非排他的に挙げると、携帯可能コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読取り専用メモリ（ＲＯＭ）、消去可能プログラマブル読取り専用メモリ（ＥＰＲＯＭまたはフラッシュ・メモリ）、静的ランダム・アクセス・メモリ（ＳＲＡＭ）、携帯可能コンパクト・ディスク読取り専用メモリ（ＣＤ−ＲＯＭ）、デジタル汎用ディスク（ＤＶＤ）、メモリ・スティック、フロッピー（Ｒ）・ディスク、命令が記録されたパンチカードまたは溝内の隆起構造などの機械符号化デバイス、およびそれらの任意の適当な組合せなどが挙げられる。本明細書で使用する「コンピュータ可読ストレージ媒体」は、電波またはその他の自由伝搬電磁波、導波路またはその他の伝送媒体中を伝搬する電磁波（例えば光ファイバ・ケーブルを通る光パルスなど）、あるいはワイヤ内を伝送される電気信号など、一過性の信号自体として解釈されないものとする。
【００８２】
本明細書に記載するコンピュータ可読プログラム命令は、コンピュータ可読ストレージ媒体からそれぞれのコンピューティング／処理デバイスにダウンロードすることもできるし、あるいは例えばインターネット、ローカル・エリア・ネットワーク、広域ネットワーク、またはワイヤレス・ネットワーク、あるいはそれらの組合せなどのネットワークを介して外部コンピュータまたは外部ストレージ・デバイスにダウンロードすることもできる。ネットワークは、伝送銅線、伝送光ファイバ、ワイヤレス伝送、ルータ、ファイヤウォール、スイッチ、ゲートウェイ・コンピュータ、またはエッジ・サーバ、あるいはそれらの組合せを含む可能性がある。各コンピューティング／処理デバイス内のネットワーク・アダプタ・カードまたはネットワーク・インタフェースは、ネットワークからコンピュータ可読プログラム命令を受信し、そのコンピュータ可読プログラム命令を、それぞれのコンピューティング／処理デバイス内のコンピュータ可読ストレージ媒体に記憶するために転送する。
【００８３】
本発明の動作を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セット・アーキテクチャ（ＩＳＡ）命令、機械語命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、あるいはＳｍａｌｌｔａｌｋもしくはＣ＋＋などのオブジェクト指向プログラミング言語、または「Ｃ」プログラミング言語もしくはそれに類するプログラミング言語などの従来の手続き型プログラミング言語などの１つまたは複数のプログラミング言語で書かれたソース・コードまたはオブジェクト・コードのいずれかである可能性がある。コンピュータ可読プログラム命令は、完全にユーザのコンピュータ上で実行されることも、部分的にユーザのコンピュータ上で実行されることも、独立型ソフトウェア・パッケージとして実行されることも、部分的にユーザのコンピュータ上で実行され、部分的に遠隔コンピュータ上で実行されることも、あるいは完全に遠隔のコンピュータまたはサーバ上で実行されることもある。最後のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）または広域ネットワーク（ＷＡＮ）など任意のタイプのネットワークを介してユーザのコンピュータに接続することができ、この接続は、（例えばインターネット・サービス・プロバイダを用いてインターネットを介して）外部のコンピュータに対して行うこともできる。いくつかの実施形態では、例えばプログラマブル論理回路、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、またはプログラマブル論理アレイ（ＰＬＡ）などの電子回路が、コンピュータ可読プログラム命令の状態情報を利用することによってコンピュータ可読プログラム命令を実行して、本発明の様々な態様を実行することもある。
【００８４】
本発明の実施形態による方法、装置（システム）、およびコンピュータ・プログラム製品を示す流れ図またはブロック図、あるいはその両方を参照して、本発明の様々な態様について説明した。流れ図またはブロック図、あるいはその両方の各ブロック、および流れ図またはブロック図、あるいはその両方のブロックの様々な組合せは、コンピュータ可読プログラム命令によって実施することができることは理解されるであろう。
【００８５】
これらのコンピュータ可読プログラム命令は、それらの命令がコンピュータまたはその他のプログラマブル・データ処理装置のプロセッサを介して実行されたときに流れ図またはブロック図、あるいはその両方の１つまたは複数のブロックに指定される機能／アクションを実施する手段を生成するように、汎用コンピュータ、特殊目的コンピュータ、またはその他のプログラマブル・データ処理装置のプロセッサに提供されてマシンを作り出すものであってよい。また、これらのコンピュータ可読プログラム命令は、命令を記憶しているコンピュータ可読ストレージ・デバイスが、流れ図またはブロック図、あるいはその両方の１つまたは複数のブロックに指定される機能／アクションの様々な態様を実施する命令を含む製品を構成するように、コンピュータ可読ストレージ媒体に記憶され、コンピュータ、プログラマブル・データ処理装置、またはその他のデバイス、あるいはそれらの組合せに特定のかたちで機能するように指示することができるものであってもよい。
【００８６】
コンピュータ可読プログラム命令は、コンピュータ、その他のプログラマブル装置、またはその他のデバイス上で実行された命令が、流れ図またはブロック図、あるいはその両方の１つまたは複数のブロックに指定される機能／アクションを実施するように、コンピュータ実施プロセスを作り出すべく、コンピュータ、その他のプログラマブル・データ処理装置、またはその他のデバイスにロードされ、そのコンピュータ、その他のプログラマブル装置、またはその他のデバイス上で一連の動作ステップを実行させるものであってもよい。
【００８７】
添付の図面の流れ図およびブロック図は、本発明の様々な実施形態によるシステム、方法、およびコンピュータ・プログラム製品の可能な実施態様のアーキテクチャ、機能、および動作を示している。これに関連して、流れ図またはブロック図の各ブロックは、指定された論理機能（１つまたは複数）を実施するための１つまたは複数の実行可能命令を含む、モジュール、セグメント、または命令の一部分を表す可能性がある。いくつかの代替の実施態様では、ブロックに記載される機能は、図面に記載される以外の順序で発生することもある。例えば、連続して示されている２つのブロックが、実際には実質的に同時に実行されることもあり、あるいは、関係する機能によっては逆の順序で実行されることもある。また、ブロック図または流れ図、あるいはその両方の各ブロック、およびブロック図または流れ図、あるいはその両方のブロックの組合せは、特殊な機能またはアクションを実行する、あるいは特殊目的のハードウェアおよびコンピュータ命令の組合せを実行する特殊目的ハードウェア型システムによって実施することもできることに留意されたい。
【００８８】
上述のように、不揮発性メモリ・アレイの制御装置は、その不揮発性メモリ・アレイ内の物理ページをページごとにリタイアさせる。制御装置によってリタイアした物理ページは、第２の物理ページと共通のメモリ・セルのセットを共有する第１の物理ページを含む。第１の物理ページはリタイアするが、制御装置は、第２の物理ページをアクティブな物理ページとして保持し、ダミー・データを第１の物理ページに書き込み、ホストから受信したデータを第２の物理ページに書き込む。
【００８９】
１つまたは複数の好ましい実施形態を参照して、本発明を上述のように特に示したが、本発明の思想および範囲を逸脱することなく、形態および詳細の様々な変更を行うことができることは、当業者なら理解するであろう。例えば、特定の機能を支持するフラッシュ制御装置を含むデータ・ストレージ・システムに関連して様々な態様について説明したが、本発明は、あるいは、プロセッサによって処理されるとそれらの機能を実行することができる、またはそれらの機能を実行させることができるプログラム・コードを記憶するストレージ・デバイスを含むプログラム製品として実施されることもあることを理解されたい。本明細書で利用する「ストレージ・デバイス」は、特に、法定製品のみを含むものであり、伝送媒体自体、一過性の伝搬信号自体、および様々な形態のエネルギー自体は排除するものとして特に定義される。
【００９０】
さらに、ＮＡＮＤ型フラッシュ・メモリの使用を含む実施形態について説明したが、本発明の実施形態は、例えば相変化メモリ（ＰＣＭ）およびその組合せなど、その他のタイプの不揮発性ランダム・アクセス・メモリ（ＮＶＲＡＭ）とともに使用することもできることを理解されたい。
【００９１】
上述した図面、ならびに具体的な構造および機能の書面による説明は、出願人等が発明した範囲、または添付の特許請求の範囲を限定するために与えたものではない。限定のためではなく、これらの図面および書面による説明は、特許保護が求められる発明を作成して使用することを当業者に教示するために提供したものである。当業者なら、明瞭性のために、また理解を促すために、これらの発明の商業的な実施形態の全ての特徴が記載または図示されているわけではないことを理解するであろう。また、当業者なら、本発明の態様を組み込む実際の商業的実施形態の開発では、その商業的実施形態についての開発者の最終的な目標を実現するための多数の実施態様に特有の判断が必要になることも理解するであろう。このような実施態様に特有の判断は、これらに限定されない可能性が高いが、個々の実施態様によって、位置によって、またはその時々で変化する可能性がある、システム関連、ビジネス関連、および政府関連などの制約への準拠を含むことがある。開発者の努力は、絶対的な意味で複雑で時間がかかるものになる可能性があるが、それでも、そのような努力は、本開示の利益を有する当業者にとっては日常的なものであろう。本明細書に開示および教示する発明は、多数の様々な修正形態および代替形態の余地があることを理解されたい。最後に、これに限定されるわけではないが「１つ（a）」などの単数形の用語を使用していても、それは、その項目の数を限定することを意図したものではない。
【図１】
2020510931.tif 000011
【図２】
2020510931.tif 000012
【図３】
2020510931.tif 000013
【図４】
2020510931.tif 000014
【図５】
2020510931.tif 000015
【図６】
2020510931.tif 000016
【図７】
2020510931.tif 000017
【図８】
2020510931.tif 000018
【図９】
2020510931.tif 000019
【図１０】
2020510931.tif 000020
【図１１】
2020510931.tif 000021
【図１２】
2020510931.tif 000022
【図１３】
2020510931.tif 000023
【図１４】
2020510931.tif 000024
【図１５】
2020510931.tif 000025
【図１６】
2020510931.tif 000026
【図１７】
2020510931.tif 000027
【図１８】
2020510931.tif 000028
【図１９】
2020510931.tif 000029
【図２０】
2020510931.tif 000030
【図２１】
2020510931.tif 000031
【図２２】
2020510931.tif 000032
【図２３】
2020510931.tif 000033
【手続補正書】
【提出日】令和1年11月12日(2019.11.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
圧縮器における非２値コンテキスト・ミキシングの方法であって、
複数のコンテキスト・モデルが、符号化対象の次のシンボルの値に関するモデル予測を生成することと、
ミキサが、前記モデル予測から最終予測のセットを生成することと、
算術エンコーダが、受信入力シンボルおよび前記最終予測のセットに基づいて圧縮データを生成することと
を含み、前記受信入力シンボルが、２を超えるサイズを有するアルファベットに属し、前記ミキサが、前記モデル予測から特徴行列を生成し、前記最終予測のセットを生成する分類器を訓練する、方法。
【請求項２】
前記分類器が、最大エントロピー分類器である、請求項１に記載の方法。
【請求項３】
前記分類器が、確率的勾配降下法を用いて訓練される、請求項１に記載の方法。
【請求項４】
前記分類器が、ミニ・バッチ勾配降下法を用いて訓練される、請求項１に記載の方法。
【請求項５】
前記分類器が、雑音対照推定を用いて訓練される、請求項１に記載の方法。
【請求項６】
前記ミキサが、ニューラル・ネットワークである、請求項１に記載の方法。
【請求項７】
前記分類器が、確率的勾配降下法を用いて訓練される最大エントロピー分類器である、請求項１に記載の方法。
【請求項８】
データ・ストレージ・システムであって、
符号化対象の次のシンボルの値に関する第１のモデル予測を生成するように構成された第１の複数のコンテキスト・モデルと、
前記第１のモデル予測から第１の最終予測のセットを生成するように構成された第１のミキサと、
受信入力シンボルおよび前記第１の最終予測のセットに基づいて圧縮データを生成するように構成された算術エンコーダであり、前記受信入力シンボルが２を超えるサイズを有するアルファベットに属する、前記算術エンコーダと
を備える、非２値コンテキスト・ミキシング圧縮器、ならびに
復号対象の次のシンボルの値に関する第２のモデル予測を生成するように構成された第２の複数のコンテキスト・モデルと、
前記第２のモデル予測から第２の最終予測のセットを生成するように構成された第２のミキサと、
前記圧縮データおよび前記第２の最終予測のセットに基づいて前記受信入力シンボルを生成するように構成された算術デコーダと
を備える、非２値コンテキスト・ミキシング圧縮解除器
を備え、前記第１および第２のミキサが、前記第１および第２のモデル予測から特徴行列を生成し、前記第１および第２の最終予測のセットを生成するそれぞれの分類器を訓練する、データ・ストレージ・システム。
【請求項９】
前記分類器が、確率的勾配降下法を用いて訓練される、請求項８に記載のデータ・ストレージ・システム。
【請求項１０】
前記分類器が、ミニ・バッチ勾配降下法を用いて訓練される、請求項８に記載のデータ・ストレージ・システム。
【請求項１１】
前記分類器が、雑音対照推定を用いて訓練される、請求項８に記載のデータ・ストレージ・システム。
【請求項１２】
前記第１および第２のミキサが、ニューラル・ネットワークである、請求項８に記載のデータ・ストレージ・システム。
【請求項１３】
前記分類器が、最大エントロピー分類器である、請求項８に記載のデータ・ストレージ・システム。
【請求項１４】
前記分類器が、確率的勾配降下法を用いて訓練される最大エントロピー分類器である、請求項８に記載のデータ・ストレージ・システム。
【請求項１５】
請求項１〜７の何れか１項に記載の方法の各ステップを、コンピュータに実行させるコンピュータ・プログラム。
【請求項１６】
請求項１５に記載の前記コンピュータ・プログラムを、コンピュータ可読ストレージ媒体に記録した、コンピュータ可読ストレージ媒体。
【国際調査報告】
2020510931.tif 000034
2020510931.tif 000035
2020510931.tif 000036