JP6342013B2 - 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム - Google Patents
不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム Download PDFInfo
- Publication number
- JP6342013B2 JP6342013B2 JP2016561095A JP2016561095A JP6342013B2 JP 6342013 B2 JP6342013 B2 JP 6342013B2 JP 2016561095 A JP2016561095 A JP 2016561095A JP 2016561095 A JP2016561095 A JP 2016561095A JP 6342013 B2 JP6342013 B2 JP 6342013B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- memory array
- page
- storage system
- volatile memory
- 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
Links
- 238000013500 data storage Methods 0.000 title claims description 41
- 238000000034 method Methods 0.000 title claims description 37
- 238000004590 computer program Methods 0.000 title description 10
- 230000008569 process Effects 0.000 description 16
- 238000010586 diagram Methods 0.000 description 14
- 230000006870 function Effects 0.000 description 13
- 239000011159 matrix material Substances 0.000 description 13
- 238000012937 correction Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 238000004891 communication Methods 0.000 description 9
- 230000004044 response Effects 0.000 description 7
- 238000013519 translation Methods 0.000 description 7
- 230000003321 amplification Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 4
- 238000003199 nucleic acid amplification method Methods 0.000 description 4
- 239000000872 buffer Substances 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 3
- 238000013507 mapping Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 239000007787 solid Substances 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000012005 ligant binding assay Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000004193 electrokinetic chromatography Methods 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013442 quality metrics Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1012—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1076—Parity data used in redundant arrays of independent storages, e.g. in RAID systems
- G06F11/108—Parity data distribution in semiconductor storages, e.g. in SSD
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Quality & Reliability (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Detection And Correction Of Errors (AREA)
- Read Only Memory (AREA)
Description
本開示は、データ・アクセス頻度に基づき、データを不揮発性メモリ内に格納することに関し、より具体的には、データ・アクセス頻度に基づき、帯域幅最適化符号語(bandwidth optimized code word)又は符号化率最適化符号語(codingrate optimized code word)で、データを不揮発性メモリ内に格納することに関する。
フラッシュメモリ(又は、単にフラッシュ)は、トランジスタの浮遊ゲート上の電荷としてメモリセルごとに1つ又は複数のデータ・ビットを格納する不揮発性メモリ技術である。次の世代のフラッシュ技術において、セル密度及びフラッシュ内のセルごとに格納されるビットの数が増大し続けるにつれて、メモリセル内に格納されるデータは、読み出しディスターブ(read disturb)、高い周囲温度、長いストレージ期間、及び他の要因によって引き起こされるビット誤り(bit error)に脆弱になる。その結果、ストレージ密度及びデータの単位当たりのコストが改善している間でも、一般に、フラッシュメモリ・デバイスを評価する読み出し/書き取りサイクルの数は、低下している。
デジタル伝送及びストレージにおいて、データが誤りを含むものとして検出され、データが訂正又は廃棄されることがある。特定のビットが、何らかの誤り訂正(error correction)を行う前に、誤っているとして検出される可能性は、生のビット誤り率(raw bit error rate、RBER)として知られる。訂正不能ビット誤り率(uncorrectederror rate、UBER)は、デジタル伝送及びストレージにおける別の品質メトリックである。UBERは、何らかの誤り訂正を行った後に、所定のビットが誤っている可能性を特徴付ける。誤り訂正符号(ECC)は(通常、冗長情報を元のデータに付加することにより)格納された又は伝送されたデータを修正し、データの受信又は取得後に誤りを訂正することができる。ECCメモリは、例えば、一般的に、データの破損を許容できないデータ処理システム(例えば、科学又は金融コンピューティング)で用いることができる。例えば、フラッシュメモリ・コントローラはECCを実装し、ハードディスク・ドライブ(HDD)の代わりに使用される、フラッシュ・ドライブなどのソリッド・ステート・ドライブ(SDF)で用いることができる。
フラッシュの設計のため、フラッシュメモリ・デバイスのデータは、直接上書きすることができない(直接上書きすることができるHDD上のデータとは対照的に)。データがフラッシュに最初に書き込まれると、フラッシュのメモリセルは全て、消去された状態で開始し、データは通常、ページ単位(例えば、16キロバイト(kB)ページ)でメモリセルに書き込まれる。一般に、フラッシュ・ドライブのフラッシュ・コントローラは、フラッシュを管理し、フラッシュ変換層(FTL)により与えられる論理・物理マッピング・システム(論理ブロック・アドレッシング(LBA)として一般に知られる)を用いて、ホスト・システムとインターフェース接続する。メモリセルに既に書き込まれた古いデータと置き換えるために、フラッシュ・コントローラにより新しいデータが受信されると、フラッシュ・コントローラは、新しいデータを新しい物理位置に書き込み、新しい物理位置を指し示すように論理マッピングを更新する。この場合、古い物理位置内のデータはもはや有効ではなく、データを古い物理位置に再び書き込む前に、消去する必要がある。周知のように、フラッシュは、フラッシュの寿命にわたって、限られた回数(最大プログラム/消去(P/E)サイクル数とも呼ばれる)しか、プログラム及び消去することができない。一般に、シングル・レベル・セル(single-level cell、SLC)フラッシュは、より高い性能及びより長い持続時間用に設計され、典型的には、50,000サイクルから100,000サイクルまでの間動作することができる。SLCフラッシュと対照的に、マルチ・レベル・セル(multi-level cell、MLC)フラッシュは、より低コストの用途用に設計され、低減したP/Eサイクル・カウントを有する(すなわち、MLCフラッシュについてのP/Eサイクル・カウントは、一般的に、3,000P/Eサイクルから5,000P/Eサイクルまでの間である)。
周知のように、書き込み増幅(write amplification、WA)は、実際の書き込まれた物理情報量が、書き込むことを意図した論理量の倍数となる、不揮発性メモリ(例えば、フラッシュ)と関連した望ましくない現象である。フラッシュは、フラッシュに再書き込みできる前に消去されるように設計されているので、書き込み操作を行うためのプロセスにより、ユーザデータ及びメタデータは2回以上移動される(又は、再書き込みされる)ことになる。この増倍効果は、フラッシュの寿命にわたって必要とされる書き込み回数を増加させ、そのことは、フラッシュが確実に動作できる期間を短くする。書き込み回数の増加はまた、フラッシュに対する帯域幅を消費し、そのことは、フラッシュのランダム書き込み性能を低下させる。一般に、WAが小さいとデータをフラッシュに書き込むためのP/Eサイクル数が低減し、従って、フラッシュ・ドライブの寿命が増大するので、フラッシュのWAが小さいことが望ましい。
本開示は、一般に、コントローラにより制御される不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための技術に向けられる。
この技術は、帯域幅最適化符号語で、アクセス頻度が第1のアクセス・レベルを上回る第1のデータを不揮発性メモリ・アレイ内に格納することを含む。アクセス頻度が第2のアクセス・レベルを下回る第2のデータは、符号化率最適化符号語で、不揮発性メモリ・アレイ内に格納される。1つ又は複数の実施形態において、第1及び第2のアクセス・レベルは同じとすることができる。
当業者であれば理解するように、本発明の態様は、システム、方法又はコンピュータ・プログラム製品として具体化することができる。従って、本発明の態様は、完全にハードウェアの実施形態、完全にソフトウェアの実施形態(ファームウェア、常駐ソフトウェア、マイクロコード等を含む)、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形態をとることができ、本明細書においては、これらは全て、一般的に「回路」、「モジュール」又は「システム」と呼ぶことがある。さらに、本発明の態様は、媒体内に具体化されたコンピュータ可読プログラム・コードを有する、1つ又は複数のコンピュータ可読媒体内に具体化されたコンピュータ・プログラム製品の形態をとることができる。
1つ又は複数のコンピュータ可読媒体のいずれかの組み合わせを用いることもできる。コンピュータ可読媒体は、コンピュータ可読信号媒体又はコンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、これらに限定されるものではないが、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のもののいずれかの適切な組み合わせとすることができる。コンピュータ可読ストレージ媒体のより具体的な例(非網羅的なリスト)として、以下のもの、即ち、1つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハードディスク、ランダム・アクセス・メモリ(RAM)、読み出し専用メモリ(ROM)、消去可能なプログラム可能読み出し専用メモリ(EPROM又はフラッシュ・メモリ)、光ファイバ、ポータブル・コンパクト・ディスク型読み出し専用メモリ(CD−ROM)、光記憶装置、磁気記憶装置、又は上記のもののいずれかの適切な組み合わせが挙げられる。本明細書の文脈においては、コンピュータ可読ストレージ媒体は、命令実行システム、装置若しくはデバイスによって又はそれらと関連して用いるためのプログラムを収容又は格納することが可能な任意の有形媒体とすることができる。
コンピュータ可読信号媒体は、例えばベースバンド内に、又は搬送波の一部として、具体化されたコンピュータ可読プログラム・コードをその中に有する、伝搬されるデータ信号を含むことができる。このような伝搬信号は、これらに限定されるものではないが、電磁気、光又はそれらのいずれかの適切な組み合わせを含む、種々の形態のいずれかを取ることができる。コンピュータ可読信号媒体は、コンピュータ可読ストレージ媒体ではなく、かつ、命令実行システム、装置若しくはデバイスによって、又はこれらと関連して用いるためのプログラムを伝達し、伝搬し、又は搬送することができる任意のコンピュータ可読媒体とすることができる。
コンピュータ可読媒体上に具体化されたプログラム・コードは、これらに限定されるものではないが、無線、有線、光ファイバ・ケーブル、無線周波数等、又は上記のもののいずれかの適切な組み合わせを含む任意の適切な媒体を用いて伝送することができる。
本発明の態様の動作を実行するためのコンピュータ・プログラム・コードは、Java、Smalltalk、C++などのようなオブジェクト指向型プログラミング言語、及び、「C」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む、1つ又は複数のプログラミング言語の任意の組み合わせで記述することができる。プログラム・コードは、完全にユーザのコンピュータ上で実行される場合もあり、一部がユーザのコンピュータ上で、独立型ソフトウェア・パッケージとして実行される場合もあり、一部がユーザのコンピュータ上で実行され、一部が遠隔コンピュータ上で実行される場合もあり、又は完全に遠隔コンピュータ若しくはサーバ上で実行される場合もある。後者のシナリオにおいて、遠隔コンピュータは、ローカル・エリア・ネットワーク(LAN)若しくは広域ネットワーク(WAN)を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続される場合もあり、又は外部コンピュータへの接続がなされる場合もある(例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて)。
本発明の態様は、本発明の実施形態による方法、装置(システム)及びコンピュータ・プログラム製品のフローチャート図及び/又はブロック図を参照して説明される。フローチャート図及び/又はブロック図の各ブロック、並びにフローチャート図及び/又はブロック図におけるブロックの組み合わせは、コンピュータ・プログラム命令によって実装できることが理解されるであろう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに与えて、マシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するための手段を作り出すようにすることができる。
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納し、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装する命令を含む製品を製造するようにもすることができる。
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他の装置上にロードして、そのコンピュータ、他のプログラム可能データ処理装置、又は他の装置上で行われる一連の動作ステップによりコンピュータ実装プロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び/又はブロック図の1つ又は複数のブロックにおいて指定された機能/動作を実装するためのプロセスを提供することもできる。
ターボ製品符号(TPC)は、例えば、携帯電話、衛生通信、無線通信及びテープ媒体などの種々の用途で使用されている1つのクラスの誤り訂正符号(ECC)である。一般に、TPCは、比較的高い符号化率を有し、雑音環境においてうまく機能し、特定用途向け集積回路(ASIC)及びフィールド・プログラマブル・ゲート・アレイ(データ・ストレージ・システム120)内に容易に実装することができる。TPCは、本質的に反復型であり、比較的高い生のビット誤り率(RBER)を確実に訂正することができ、一般に、比較的高い符号化率は、TPCを騒音環境にとって理想的なものにする。例えば、TPCは、例えばNANDフラッシュ・メモリ(又は、単にNANDフラッシュ)などの、種々のタイプの不揮発性ストレージ・デバイスと共に有利に用いることができる。
一般に、TPCは、不揮発性ストレージ・デバイス(例えば、フラッシュを含むソリッド・ステート・デバイス(SSD)など)で使用し、2パーセントまでのRBERを訂正することができ、このように、不揮発性ストレージ・デバイスが経済的であり、企業アプリケーションにおいて信頼できる時点まで不揮発性ストレージ・デバイスの平均寿命を延ばす際の重要なツールとして用いることができる。TPC語が比較的長い場合、TPCは特に、RBERを低減させるのに長けている。例えば、400列及び352行のマトリックスを有するTPCは、各行及び各列における3ビット及びパリティ・ビットを訂正して、誤り訂正を最小にすることを可能にする。15,066バイトのデータ・ペイロードを有する17,600バイト符号語の場合、符号化率(データ・ペイロードを総バイト量(すなわち、データ・ペイロードにオーバーヘッド・チェック情報を加えたもの)で割ったもの)は、約85.6パーセントである。この場合、(17,600バイト符号語内に)格納される情報の約14.4パーセントは、オーバーヘッド・チェック及び訂正情報であり、17,600バイト符号語の85.6%は、データ・ペイロード(例えば、顧客データ))である。400列及び352行のマトリックスを有するTPCは、約1.09%までRBERを確実に訂正することができる。400列及び352行のマトリックスを有するTPC(例えば、372列及び324行のデータ・ペイロード)は、一行の3ビット及び一列の3ビットを訂正することができるとき、3×3のチェック強度を有すると言われる。開示される技術は、異なるマトリックス・サイズにも、及びこれに対応して異なるチェック強度にも適用可能であることを理解されたい、さらに、開示される技術は、TPC以外のECCを用いて生成される符号語にも適用可能であることも考えられる。
400列及び352行のマトリックスを有するTPCは比較的強力であるが、例えばフラッシュ(NANDフラッシュ)を含むソリッド・ステート・デバイス(SSD)などのこうしたTPCを不揮発性ストレージ・デバイス内に配備することにより、比較的大きい符号語がもたらされる。例えば、フラッシュを配備するデータ・ストレージ・システムにおける4キロバイト(kB)又は4096バイトのホスト要求データサイズについては、フラッシュと関連したストレージ・バスにおいて比較的大きい読み出し増幅が生じる。この例において、4096バイトの読み出しでは、要求される4096バイトを戻す前に、1つ又は2つの完全な17600バイト符号語を読み出し、デコードを行うことが必要である。後者の場合、2つの完全符号語の読み出しは、要求されるデータが2つの符号語にまたがるときに生じる。平均して、17600バイトの長さを有する符号語からの4096バイトの読み出しにより、5より多い平均読み出し増幅がもたらされる。つまり、5の計算された読み出し増幅及び毎秒200k 4kBの入力/出力(I/O)操作(IOP)の所望の読み出しスループットを有する17,600バイト符号語の場合、フラッシュ・コントローラは、4GB/秒より多いデータを読み出して、およそ800MB/秒のデータをホストに戻すことが必要とされる。フラッシュ・コントローラが4GB/秒より多いデータを読み出して、800MB/秒のデータをホストに戻すことを必要とすることは、無駄な帯域幅及び比較的高い電力損をもたらす。
無駄な帯域幅を最小にする1つの解決法は、より短いTPC語を用いることである。しかしながら、3×3のチェック強度を有する1つの4kBページを保持するTPC語は、(およそ4つの4kBページを有する場合と比較して)比較的低い符号化率(例えば、70パーセントから80パーセントまでの間)を有する。こうした符号は比較的強力であり、比較的高いRBERを処理することができるが、フラッシュ・コントローラに対してこうしたECCスキームを用いることは、比較的多数のNANDビットを訂正専用にすることを必要とし、結果として得られるフラッシュ・ドライブは、恐らく、コストの観点からすると競争力が高くない。この問題に対処するために、可変強度ECCを用いる設計が提案されている。可変強度ECCを用いる設計においては、RBERの増加に応答して、設計は、低レベルECCからより強力な高レベルECCに切り換わる。残念なことに、NANDフラッシュにおける低レベルECCからより強力な高レベルECCへの変更は、関連したデバイスが古くなるにつれて、ECCがより多くのNANDフラッシュ・ビットを消費することを意味する。フラッシュ内のビット誤りの分布によっては、関連したデバイスが古くなるにつれて付加的なNANDフラッシュ・ビットを消費するECCが許容可能である場合がある。
本開示の1つの態様によると、入ってくるワークロードを分離し、より頻繁にアクセスされるデータ(すなわち、ホット・データ)をより小さいコンテナ・サイズ(container size)に割り当て、(たとえ低減した符号化率でも)無駄な帯域幅を最小にする技術が開示される。あまり頻繁にアクセスされない・データ(すなわち、コールド・データ)又は一般的に連続的にアクセスされるパターンでアクセスされるデータは、大きなコンテナ内に格納されるので、(たとえより高い帯域幅要件でも)関連した符号化率は、より効率的なフラッシュの使用をもたらす。データに比較的少ししかアクセスされないと仮定して、符号化率を増大させるためにより大きいコンテナを用いることは望ましい。本開示の態様によると、効率を向上させるために同じ内部アレイを用いて(その結果、1つのTPCエンジンしか必要とされない)、異なるECC機構を実装することができる。
例えば、17,600バイトまで保持することができる(15,066バイトの最大データ・ペイロード及び2,534バイトのチェック及び訂正情報を有する)TPCエンジン及びマトリックスを生成することができる。次に、1バイトから、15,066バイト(符号語をエンコード/デコードするのに必要に応じてゼロをパディングする)のデータ・ペイロード及び2,534バイトのチェック情報までを含むコンテナを定めることができる。1つの実施形態において、訂正は、3つの異なるコンテナ・サイズに対して行われ、付加的な作業は必要とされない(エンコード/デコードの前に、全てのコンテナが未使用のデータ・バイトをゼロでパディングするので)。例えば、4,400バイトを含む4分の1ページ(one-quarter page)コンテナ、8,800バイトを含む2分の1ページ(one-halfpage)コンテナ、及び17,600バイトを含む1ページ(one page)コンテナを定めることができる。
4分の1ページ・コンテナは、1,866バイトまでのデータ・ペイロードと、2,534バイトのオーバーヘッド・チェック情報(フラッシュとの間で読み書きされないが、エンコード/デコード・プロセスの際に付加される、少なくとも13,200バイトのパディングされたゼロを有する)とを含むことができる。2分の1ページ・コンテナは、6,26バイトまでのデータ・ペイロードと、2,534バイトのオーバーヘッド・チェック情報(フラッシュから読み書きされていないが、エンコード/デコード・プロセス中に付加される、少なくとも8,800バイトのパディングされたゼロを有する)とを含むことができる。1ページ・コンテナは、15,066バイトまでのデータ・ペイロードと、2,534バイトのオーバーヘッド・チェック情報(データ・ペイロードの未使用バイトに用いられるパディングされたゼロを有する)とを含むことができる。一般に、エンコーダの出力は、データ・ペイロードと関連したバイト及びオーバーヘッド・チェック情報のバイト(すなわち、パディングされたゼロが排除される)のみを提供する。このように、フラッシュ・コントローラによりフラッシュ・アレイに書き込まれた情報が低減される(パディングされたゼロはフラッシュ・アレイに書き込まれないので、パディングされたゼロが存在すると仮定する)。
少なくとも1つの実施形態において、フラッシュ・ブロックがフラッシュ・アレイに書き込まれた時点で、フラッシュ・コントローラは、ストレージ・ブロック(例えば、ページ)内に適合できるような、多くの異なるサイズのコンテナとしてパックするように構成される。コンテナ・サイズ、データ・ペイロードのバイト数、及びコンテナの各々についてのアドレスも格納される(例えば、ストレージ・ブロック内又は別の位置に)ことを理解されたい。代替的に、簡単にするために、フラッシュ・ブロック書き込みが、ストア操作のために複数のデータ・ペイロード・タイプの1つだけを保持すると示されるとき、コンテナ・サイズは、フラッシュ・ブロック・パラメータに対応し得る。
1つ又は複数の実施形態において、ホスト読み出しが行われると、フラッシュ・コントローラは、所望のデータ・ペイロードがフラッシュ及び所望のデータ・ペイロード用のコンテナ・タイプ内に物理的に格納される(データ構造にアクセスすることにより)場所を判断する。次に、1つ又は複数のコンテナは、必要に応じてゼロがパディングされたデコーダ(例えば、TPCデコーダ)を通して読み出され、処理されて、データ・ペイロードを与える。次に、デコードの後、要求されたデータがホストに戻される。読み出される付加的なコンテナ(すなわち、要求されたデータを含まないが、要求されたデータを戻すために読み出されたコンテナ)が廃棄されても、又は付加的なコンテナ内のデータ・ペイロードが要求されるイベントにおいて一定の時間バッファ内に保持されてもよい。
どのコンテナを特定のホスト書き込みアクセスに割り当てるかを判断する際、フラッシュ・コントローラは、書き込みアクセスと関連したデータが、典型的に、どのように読み出されるかを示す収集された統計値を利用することができる(アドレス又はアドレス範囲に基づいて)。例えば、読み出されたある量のデータが特定サイズのページ・コンテナに対応する可能性が高い場合、データは、アクセス頻度に関係なく、特定サイズのコンテナに格納することができる。一例として、一般的に、所定のデータが、2分の1ページ・コンテナのデータ・ペイロードに対応する量で読み出された場合、所定のデータは2分の1ページ・コンテナ内に格納される。要求されたデータが読み出される方法について統計値が利用可能でないイベントにおいて、フラッシュ・コントローラは、アクセス頻度を用いて、データ・ペイロードに対するコンテナを選択するときに、データがホットであるか又はコールドであるかを判断することができる。
一例として、フラッシュ・コントローラは、最もホットなホスト・アクセス(例えば、100ミリ秒未満ごとにアクセスされるデータ)に対する4分の1ページ・コンテナ;2番目にコールドなアクセス(例えば、100ミリ秒ごとから200ミリ秒ごとまでの間にアクセスされるデータ)に対する2分の1ページ・コンテナ;及び最もコールドなアクセス(例えば、200ミリ秒ごとに1回を下回る頻度でアクセスされるデータ)に対する1ページ・コンテナを選ぶように構成することができる。少なくとも1つの実施形態において、2分の1ページの転送について、フラッシュ・コントローラは、符号化率の非効率のために、4分の1ページ・コンテナを使用しない。この場合、2分の1ページ・コンテナ又は1ページ・コンテナのいずれかが、フラッシュ・コントローラにより選択される。本明細書での議論は、4分の1ページ、2分の1ページ及び1ページ・コンテナに焦点を合わせているが、開示される技術は、一般的にデータがフラッシュに書き込まれる方法に応じて、3つのより多い又は少ないサイズのコンテナ及びコンテナに対する異なるページ・サイズ粒度を用いるデータ・ストレージ・システムにおいて用いることができる(例えば、ストレージ・システムは、16分の1ページ・コンテナ、8分の1ページ・コンテナ、4分の1ページ・コンテナ、2分の1ページ・コンテナ及び1ページ・コンテナを用いることができる)ことを理解されたい。さらに、符号語は、フラッシュ・ページ毎の符号語の数が、例えば、3分の1ページ・コンテナ又は6分の1ページ・コンテナなど2の整数乗でないように定めることができる。
ここで図を、特に図1を参照すると、本明細書でさらに説明されるようなNANDフラッシュ・メモリ(又は、単にNANDフラッシュ)を用いるデータ・ストレージ・システムを含む例示的データ処理環境100の高レベル・ブロック図が示される。図示のように、データ処理環境100は、命令及びデータを処理する1つ又は複数のプロセッサ104を有する少なくとも1つのプロセッサ・システム102を含む。プロセッサ・システム102は、プログラム・コード、オペランド及び/又はプロセッサ104により実行される処理の実行結果を格納することができるローカル・ストレージ106(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM)及び/又はディスク)をさらに含むことができる。種々の実施形態において、プロセッサ・システム102は、例えば、モバイル・コンピューティング・デバイス(スマートフォン又はタブレットなど)、ラップトップ又はディスクトップ・パーソナル・コンピュータ・システム、サーバ・コンピュータ・システム(インターナショナル・ビジネス・マシーンズ・コーポレーションから入手可能なPOWER(商標)シリーズの1つのような)、又はメインフレーム・コンピュータ・システムとすることができる。プロセッサ・システム102はまた、ARM(商標)、PowerPC(商標)、Intel(商標)X86のような種々のプロセッサ、又はメモリ・キャッシュ、メモリ・コントローラ、ローカル・ストレージ、入力/出力(I/O)バス・ハブ等と結合されたいずれかの他のプロセッサを用いた、埋め込まれたプロセッサ・システムとしてもよい。
プロセッサ・システム102は、I/Oチャネル110を介してデータ・ストレージ・システム120に直接(すなわち、介在するデバイスなしに)又は間接的に(すなわち、少なくとも1つの中間デバイスを通して)結合されたI/Oアダプタ108をさらに含む。種々の実施形態において、I/Oチャネル110は、例えば、ファイバ・チャネル(FC)、FCオーバー・イーサネット(FCoE)、インターネット・スモール・コンピュータ・システム・インターフェース(iSCI)、Transport control protocol/Internet protocol(TCP/IP)、peripheral component interconnect express(PCIe)等を含む、周知の又は将来開発される通信プロトコルのうちのいずれか1つ又はその組み合わせを用いることができる。I/Oチャネル110を介して通信されるI/O操作には、プロセッサ・システム102がデータ・ストレージ・システム120からデータを要求する読み出しI/O操作と、プロセッサ・システム102がデータ・ストレージ・システム120内へのデータの格納を要求する書き込みI/O操作とが含まれる。
示される実施形態において、データ・ストレージ・システム120は、データ・ストレージ・システム120がI/Oチャネル110を介してプロセッサ・システム102から要求を受け取り、これに応答する、インターフェース122を含む。インターフェース122は、関連したフラッシュ・コントローラ・メモリ126(例えば、ダイナミック・ランダム・アクセス・メモリ(DRAM))を有するフラッシュ・コントローラ124(例えば、特定用途向け集積回路(ASIC)及びフィールド・プログラマブル・ゲート・アレイ(FPGA))に結合される。1つ又は複数の実施形態において、フラッシュ・コントローラ124は、NANDフラッシュ・メモリ・アレイ140内に格納される情報をエンコード/デコードするのに用いられるエンコーダ/デコーダ127を含むECCエンジン123(例えば、TPCエンジン)を含む。本開示によると、フラッシュ・コントローラ124は、符号語をNANDフラッシュ・メモリ・アレイ140内に格納する前に、エンコードされた符号語からパディングされたゼロを除去するように構成される。フラッシュ・コントローラ124はまた、読み出された符号語をデコードする前に、NANDフラッシュ・メモリ・アレイ140から読み出された符号語内にパディングされたゼロを挿入するようにも構成される。示されるように、マトリックス125をフラッシュ・コントローラ・メモリ126内に形成して、符号語の形成を容易にすることができる。例えば、マトリックス125は、400列及び352行を有するTPCマトリックスとすることができる。マトリックス125は、必要に応じて、データ・ストレージ・システム120の異なる部分にプロビジョニングできることを理解されたい。フラッシュ・コントローラ124は、関連したCPUメモリ130(例えば、DRAM)を有するCPU128に付加的に結合され、NANDフラッシュ・メモリ・アレイ140にさらに結合される。
フラッシュ・コントローラ124がFPGAと共に実装される実施形態において、CPU128は、データ・ストレージ・システム120の起動中にフラッシュ・コントローラ124をプログラムし、構成することができる。起動後、一般的な操作において、フラッシュ・コントローラ124は、I/Oチャネル110及びインターフェース122を介して読み出し及び書き込みI/O操作を受け取り、NANDフラッシュ・メモリ・アレイ140内に格納されたデータを読み出し、及び/又はデータをNANDフラッシュ・メモリ・アレイ140内に書き込む。フラッシュ・コントローラ124は、例えば、NANDフラッシュ・メモリ・アレイ140にアクセスして、NANDフラッシュ・メモリ・アレイ140との間で要求されたデータを読み書きすることによって、又はNANDフラッシュ・メモリ・アレイ140と関連したメモリ・キャッシュ(図示せず)にアクセスすることによって、これらのI/O操作をサービスする。上述のように、フラッシュ・コントローラ124はまた、NANDフラッシュ・メモリ・アレイ140に書き込まれるデータをエンコードし、NANDフラッシュ・メモリ・アレイ140から読み出されるデータをデコードするためのエンコーダ/デコーダ127を含む、ECCエンジン123を有するように構成することもできる。上述のようにデータをエンコード/デコードする際、フラッシュ・コントローラ124は、例えば、フラッシュ・コントロール・メモリ126内に実装することができるマトリックス125にアクセスする。
フラッシュ・コントローラ124はまた、論理−物理アドレス変換を提供して、NANDフラッシュ・メモリ・アレイ140内の特定のメモリ位置へのアクセスを可能にするフラッシュ変換層(FTL)を実装することもできる。一般に、プロセッサ・システム102のようなホスト・デバイスからフラッシュ・コントローラ124により受信される要求は、データがアクセスされる(読み出し又は書き込みが行われる)論理ブロック・アドレス(LBA)を含み、書き込み操作の場合、書き込みデータはデータ・ストレージ・システム120に格納される。要求はまた、アクセスされるデータの量(又はサイズ)を指定することもできる。データ・ストレージ・システム120がサポートするプロトコル及び機能に応じて、他の情報を伝達することもできる。従って、ホスト・デバイスによって与えられるLBAは、論理アドレス空間内のページに対応する。フラッシュ変換層は、LBAを、NANDフラッシュ・メモリ・アレイ140内の対応する物理位置に割り当てられた物理アドレスに変換する。フラッシュ・コントローラ124は、アドレス変換を行い、及び/又は、論理アドレスと物理アドレスとの間のマッピングを、フラッシュ・コントローラ・メモリ126内に格納することができる、変換テーブル(TT)150などの論理−物理変換データ構造内に格納することができる。
図1にさらに示されるように、フラッシュ・コントローラ124は、NANDフラッシュ・メモリ・アレイ140に関する情報を追跡するために1つ又は複数の付加的なデータ構造を維持することができ、そのデータ構造をフラッシュ・コントローラ・メモリ126内のバッファに入れることもできる。これらのデータ構造は、例えば、消去されたNANDフラッシュ・メモリ・アレイ140内の物理メモリのブロックを識別する消去ブロックリスト(EBL)152、書き込みI/O操作の書き込みデータを用いたプログラミングに利用可能なNANDフラッシュ・メモリ・アレイ140内の物理メモリのブロックを識別する利用可能ブロック・キュー(ABQ)、及び頻繁にアクセスされるLBAを識別し、書き込みI/O操作上のデータ・ペイロードに対して選択すべきコンテナ・サイズの判断に用いることができるホット・リスト156を含むことができる。当業者には理解されるように、種々の実施形態において、フラッシュ・コントローラ124は、共通のデータ構造内のこれらのデータ構造の1つ又は複数を結合すること、及び/又は、NANDフラッシュ・メモリ・アレイ140を管理するために付加的なデータ構造を実装することができる。
種々の実施形態において、NANDフラッシュ・メモリ・アレイ140は、異なる形態をとることができる。ここで図2〜図5を参照すると、本開示によるNANDフラッシュ・メモリ・アレイ140内の物理メモリの1つの例示的構成が示される。
図2に示されるように、NANDフラッシュ・メモリ・アレイ140は、32個の別個にアドレス指定可能なNANDフラッシュ・ストレージ・デバイスから形成することができる。示される例において、フラッシュ・ストレージ・デバイスM0a〜M15bの各々は、例えば、シングル・レベル・セル(SLC)、マルチ・レベル・セル(MLC)、3レベル・セル(TLC)、又は4レベル・セル(QLC)のNANDフラッシュ・モジュールなどの、ボード実装フラッシュ・モジュールの形態をとることができる。32個のNANDフラッシュ・モジュールは、2つの(M0a、M0b)乃至(M15a、M15b)の16のグループの形に構成される。物理アドレッシング・スキームのために、2つのモジュールの各グループは、「チャネル」とも呼ぶことができる「レーン」を形成することができ、NANDフラッシュ・メモリ・アレイ140は、16個のチャネル又はレーン(レーン0〜レーン15)を含む。
1つの実施形態において、個々のレーンの各々は、レーンをフラッシュ・コントローラ124に結合する、それぞれの関連したバスを有する。従って、特定の通信バスの1つへの通信を指示することによって、フラッシュ・コントローラ124は、フラッシュ・モジュールのレーンの1つへの通信を指示することができる。所定のレーンについての各通信バスは、他のレーンについての通信バスと独立しているので、フラッシュ・コントローラ124は、コマンドを発行し、同時に種々の通信バスにわたってデータを送受信し、フラッシュ・コントローラ124が、同時に又はほぼ同時に個々のレーンに対応するフラッシュ・モジュールにアクセスすることが可能になる。
ここで図3を参照すると、図2のフラッシュ・モジュールM0a〜M15bのいずれかを実装するために用いることができる例示的フラッシュ・モジュール300が示される。図3に示されるように、フラッシュ・モジュール300により与えられる物理ストレージ位置は、チップ・イネーブル(CE)を通してアドレス指定する及び/又は識別することができる物理位置にさらに細分される。図3の例において、各フラッシュ・モジュール300の物理メモリは、各々がフラッシュ・コントローラ124によりアサートされ、対応するCE内の物理メモリ位置との間のアクセスを可能にするそれぞれのCEラインを有する、4つのチップ・イネーブル(CE0、CE1、CE2及びCE3)に分割される。次に、各々のCEは、各々が2つのプレーン(プレーン0及びプレーン1)を有する複数のダイ(例えば、ダイ0及びダイ1)に細分される。各々のプレーンは、フラッシュ・モジュールの物理的レイアウトのために、互いに物理的に関連付けられ、読み書き操作のような種々の操作の性能のために共通の回路(例えば、I/Oバッファ)を用いる、ブロックの集合(後述する)を表す。
図4及び図5にさらに示されるように、図3のフラッシュ・モジュール300内のプレーンのいずれかを実装するために用いることができる例示的プレーン400が、例えば、2048のブロックの物理メモリを含む。一般に、ブロック500は、典型的には物理的に互いに関連付けられた物理ページの集合である。この関連付けにより、ブロックは、NANDフラッシュ・メモリ・アレイ140内で消去することができる物理ストレージ位置の最小粒度となるように定められる。図5の実施形態において、各ブロック500は、例えば、256の物理ページを含み、物理ページは、書き込みアクセスのための最小の別個にアドレス指定可能なデータ単位となるように定められる。例示的システムにおいて、データの各物理ページは、データ・ストレージに、以下により詳細に説明されるメタデータのための付加的なストレージを加えた共通の容量(例えば、16kB)を有する。従って、データは、ページ毎に、NANDフラッシュ・メモリ・アレイ140内に書き込まれるが、ブロック毎に消去される。
データは、2ステップ・プロセスで、NANDフラッシュ・メモリ・アレイ140から取り出す(読み出す)ことができる。フェッチ操作としても知られる第1のステップにおいて、フラッシュ・ページ全体が、基礎をなすフラッシュ・ストレージ媒体から取り出され、出力データ・バッファに転送される。データ転送操作としても知られる第2のステップにおいて、既にフェッチされたデータのいずれかのサブセットをフラッシュメモリ・デバイスから転送することができる。従って、各読み出し操作のフェッチ・コンポーネントは、最小粒度の単一フラッシュ・ページを有し、一方、各読み出し操作のデータ転送コンポーネントは、可能な限り単一バイトと同じくらい小さい、はるかに小さい粒度を有する。図5にさらに示されるように、各ブロック500は、使用されなくなった(retired)(すなわち、使用をやめた)又は使用されている(not-retired)(すなわち、アクティブ又は依然として使用中)といった、そのブロック500内の各物理ページの状態を示す、ページ状態情報502を含むことが好ましい。種々の実装において、PSI 502を収集して、ブロック500内の単一のデータ構造(例えば、ベクトル又はテーブル)にすること、ブロック500内に分散させること(例えば、各物理ページに添付されるメタデータの1つ又は複数のビットとして)、又はデータ・ストレージ・システム120内のどこかに維持すること(例えば、フラッシュ・コントローラ・メモリ126のデータ構造内に)ができる。
上述のように、データ・ストレージ・システム120は、通常、外部デバイスがNANDフラッシュ・メモリ・アレイ140内の物理メモリ位置に直接アドレス指定する、及び/又はアクセスすることを許可しない。代わりに、データ・ストレージ・システム120は、通常、単一の連続した論理アドレス空間を外部デバイスに与えるように構成され、従って、ホスト・デバイスが論理アドレス空間内のLBAとの間でデータを読み書きするのを可能にしながら、フラッシュ・コントローラ124及びCPU128が、種々のLBAと関連したデータが、NANDフラッシュ・メモリ・アレイ140を含む物理メモリ位置内に実際に常駐する場所を制御することを可能にしながら、ホスト・デバイスが論理アドレス空間内のLBAとの間でデータを読み書きするのを可能にする。このように、NANDフラッシュ・メモリ・アレイ140の性能及び寿命をインテリジェントに管理及び最適化することができる。
データ・ストレージ・システム120に書き込みが行われると、フラッシュ・コントローラ124及びCPU128は、NANDフラッシュ・メモリ・アレイ140内の消去ブロックの1つの物理ページの1つに格納されたデータを無効にする。新しいデータは、書き込まれているデータと併合され、最終的に、NANDフラッシュ・メモリ・アレイ140内の異なる位置に格納される。ページ又はページの部分は無効にされ、従って、NANDフラッシュ・メモリ・アレイ140の部分は未使用になる。フラッシュ・コントローラ124及びCPU128は、最終的に、ガベージ・コレクション(garbage collection)と呼ばれるプロセスを通して無効にされたページ又はページの部分を再利用する必要がある。特定の消去ブロックは、消去ブック内のデータのどれだけが無効かを含む、多数の要因に基づいて選択される。フラッシュ・コントローラ124は、EBL 152内の消去ブロックの物理ブロック・アドレス(PBA)を記録する。有効なデータが、ホストからの新しい書き込みと共に読み出され、ABQ154から割り当てられたブロック内に書き込まれる。
データ・ストレージ・システム120により実装されるフラッシュ変換層は、NANDフラッシュ・メモリ・アレイ140内の物理メモリから、ホスト・デバイスに利用可能にされた論理アドレス空間を分離するので、NANDフラッシュ・メモリ・アレイ140のサイズが、ホスト・デバイスに与えられた論理アドレス空間のサイズと等しい必要はない。大部分の実施形態において、利用可能な総物理メモリを下回る論理アドレス空間を与えること(すなわち、NANDフラッシュ・メモリ・アレイ140をオーバー・プロビジョニング(over-provisioning)すること)は、有利である。このようなオーバー・プロビジョニングは、上述のように特定量の無効データの存在が与えられた場合でも、論理アドレス空間が完全に利用されたときに、物理メモリ・リソースが利用であることを保証する。まだ再利用されていない無効データに加えて、オーバー・プロビジョニングされた空間を用いて、ECC、巡回冗長検査(CRC)及びパリティのようなデータ保護スキームの使用に伴うメモリ故障及びメモリ・オーバーヘッドの存在が与えられた場合でも、十分な論理空間が存在することを保証することができる。
1つ又は複数の実施形態において、データは、本明細書では「ページ・ストライプ」と呼ばれる、NANDフラッシュ・メモリ・アレイ140の関連した物理ページのグループに書き込まれる。NANDフラッシュ・メモリ・アレイ140内に格納された種々のページ・ストライプの長さは、変化することができ、好ましくは変化するが、1つの実施形態においては、各ページ・ストライプは、2乃至15の書き込みデータ・ページ(一般的には、ホスト・デバイスにより与えられる)と、書き込みデータについてのデータ保護情報を格納するために用いられる1つの付加的ページ(「データ保護ページ」)とを含む。例えば、図6は、N個のデータ・ページ(すなわち、Dページ00乃至DページN−1)と、1つのデータ保護ページ(すなわち、PページN)とを含む例示的ページ・ストライプ600を示す。
図7は、ページ・ストライプ700内の各データ・ページの例示的フォーマットを示す。この例において、データ・ページ700は、16kBデータ・フィールド702と、データ・ページ記述するメタデータのための付加的フィールドとを含む。示される例において、これらのメタデータ・フィールドは、データ・ページ700のLBAを含むLBAフィールド704と、データ・フィールド702及びLBAフィールド704の組み合わせについて計算されたCRC値を含むCRCフィールド706と、示される例では、データ・フィールド702、LBAフィールド704及びCRCフィールド706のコンテンツの組み合わせから計算されたECC値を含むECCフィールド708とを含む。
図8は、ページ・ストライプのデータ保護ページ800の例示的フォーマットを示す。示される例では、データ保護ページ800は、ページ・ストライプ600内のデータ・ページ700のデータ・フィールド702のビット単位(bit-by-bit)XORを含むデータ排他的OR(XOR)フィールド802を含む。データ保護ページ800は、ページ・ストライプ600内のデータ・ページ700のLBAフィールド704のビット単位XORを含むLBA XORフィールド804をさらに含む。データ保護ページ800は、最後に、それぞれ、データ保護ページ800についてのCRC値及びECC値を格納するためのCRCフィールド806及びECCフィールド808を含む。こうした保護スキームは、パリティ・フィールドが必ずしも1つの特定のフラッシュ・プレーン(flash plane)上に配置されないので、一般に、RAID5と呼ばれる。しかしながら、リード・ソロモン(Reed-Solomon)のような代替的データ保護スキームを用い得ることを理解されたい。
上述したデータ・ページ及びデータ保護ページ用のフォーマットは、複数の異なる保護機構を用いてページ・ストライプ内に格納されたデータを保護する。最初に、各データ・ページ内のECCビットの使用は、フラッシュ・ページ内のビット誤りの幾らかの数の訂正を可能にする。用いられるECC方法に応じて、NANDフラッシュ・ページ内の何百ものビット又は何千ものビットさえも訂正することが可能であり得る。ECCチェック及び訂正が行われた後、訂正されたデータを検証するために、訂正されたCRCフィールドが用いられる。併用されると、これらの2つの機構は、ローカルなページ内情報のみを用いて、比較的良性の誤り(benign error)の訂正及びより重大な誤りの検出を可能にする。訂正不能な誤りがデータ・ページ内に発生した場合、例えば、データ・ページを格納するのに用いられる物理ページの故障により、ページ・ストライプについての他のデータ・ページ及びデータ保護ページから、故障データ・ページのデータ・フィールド及びLBAフィールドのコンテンツを再構成することができる。
データ・ストライプのデータ・ページ及びデータ保護ページが内部に存在する物理メモリ位置は、NANDフラッシュ・メモリ・アレイ140内で変化するが、1つの実施形態において、所定のページ・ストライプを含むデータ・ページ及びデータ保護ページは、データ・ストレージ・システム120の動作全体を最適化するために選択される物理メモリ位置に格納される。例えば、幾つかの実施形態において、ページ・ストライプを含むデータ・ページ及びデータ保護ページは、異なる物理レーンがデータ・ページ及びデータ保護ページの各々を格納するために用いられるように格納される。フラッシュ・コントローラ124はページ・ストライプを含むデータのページの全てに同時に又はほぼ同時にアクセスできるので、幾つかの実施形態は、ページ・ストライプへの効率的なアクセスをサポートすることができる。レーンへのページの割り当ては連続的である必要はなく(すなわち、データ・ページは、いずれかのレーン内に任意の順序で格納することができる)、ページ・ストライプが全長ページ・ストライプ(例えば、15のデータ・ページ及び1つのデータ保護ページを含む)でない限り、ページ・ストライプを格納するために利用されるレーンを隣接させる必要はない。
データ・ストレージ・システム120の一般的な物理構造及び動作を説明してきたが、ここで、NANDフラッシュ・メモリ・アレイ140に書き込まれたデータ・ペイロードに対するコンテナ・サイズを選択することに関する態様を含む、データ・ストレージ・システム120の特定の動作態様を説明する。
一般に、フラッシュ・コントローラ124は、アクセス履歴又はデータ・アクセスの頻度に基づき、入ってくるワークロードを分離するように構成される。図9を参照すると、NANDフラッシュ・メモリ・アレイ140内に格納されるページ900が示される。ページ900は、2分の1ページ・コンテナ902及び2つの4分の1ページ・コンテナ904を含む。400×352のマトリックスの場合、4分の1ページ・コンテナは、1,866バイトまでのデータ・ペイロードと、2,534バイトのオーバーヘッド・チェック情報(NANDフラッシュ・メモリ・アレイ140との間で読み書きされないが、エンコード/デコード・プロセスの際にフラッシュ・コントローラ124により付加される、少なくとも13,200バイトのパディングされたゼロを有する)とを含む。2分の1ページ・コンテナは、6,266バイトまでのデータ・ペイロードと、2,534バイトのオーバーヘッド・チェック情報(NANDフラッシュ・メモリ・アレイ140との間で読み書きされないが、エンコード/デコード・プロセスの際にフラッシュ・コントローラ124により付加される、少なくとも8,800バイトのパディングされたゼロを有する)とを含む。
本開示によると、フラッシュ・コントローラ124は、入ってくるワークロードを分離し、より頻繁にアクセスされるデータ(すなわち、ホット・データ)はより小さいコンテナ・サイズに割り当てられるので、無駄な帯域幅が最小にされ(たとえ減少した符号化率においても)、あまり頻繁にアクセスされないデータ(すなわち、コールド・データ)又は一般的に連続的アクセス・パターンでアクセスされるデータは、より大きいコンテナに割り当てられるので、関連した符号化率は、フラッシュのより効率的な使用をもたらす(より高い帯域幅要件においても)。図9において、コンテナ902内に格納されたデータは、コンテナ904内に格納されたデータと比べて、あまり頻繁にアクセスされない。図10を参照すると、4つの4分の1ページ・コンテナ904を含むページ1000が示される。この場合、フラッシュ・コントローラ124は、データ・アクセス頻度、又は入ってくるワークロードと関連したデータ・アクセスの履歴に基づき、4つの入ってくるワークロードを4つのそれぞれの4分の1ページ・コンテナ904に割り当てている。
ここで図11を参照すると、データ・ストレージ・システム120内に書き込まれる、入ってくるデータに対するコンテナ・サイズを選択するための例示的プロセスの高レベル論理フローチャートが説明される。コンテナ選択プロセスは、例えば、ハードウェア、ファームウェア、ソフトウェア、又はこれらの組み合わせの形で、フラッシュ・コントローラ124及び/又はCPU128により実施することができる。説明を簡単にするために、以下、プロセスはフラッシュ・コントローラ124により実施されると仮定する。
プロセスはブロック1100で始まり、次に、フラッシュ・コントローラ124がプロセッサ・システム102などのホスト・デバイスからの書き込み要求の受信を待つ、決定ブロック1102に進む。書き込み要求は、例えば、NANDフラッシュ・メモリ・アレイ140に書き込まれるデータと、ホスト・デバイスがデータの格納を望むターゲットLBAの表示とを含む。書き込み要求の受信に応答して、プロセスは、ブロック1102から、コントローラ124がデータ・アクセスの頻度(例えば、論理・物理アドレス変換テーブル150を参照することによって)、又は書き込み要求内で指定されるアドレスについてのアクセス履歴を求める、ブロック1104に進む。次に、随意的な決定ブロック1105において、フラッシュ・コントローラ124は、アクセス履歴が書き込み要求に利用可能であるかどうかを判断する。ブロック1105において、アクセス要求が書き込み要求に利用可能であることに応答して、制御は、ラッシュ・コントローラ124が履歴に基づいてコンテナ・サイズを選択する、ブロック114に移る。
例えば、格納されたデータが2分の1ページ・コンテナにおいて常に読み出されることをアクセス履歴が示すことに応答して、フラッシュ・コントローラ124は、書き込み要求に対して2分の1ページ・コンテナを選択する。履歴が書き込み要求に利用可能でないか又は履歴がコンテナ・サイズの選択の際に利用されない場合、制御は、ブロック1105から決定ブロック1106に移る。ブロック1106において、フラッシュ・コントローラ124は、書き込みアクセスのターゲットLBAのアクセス頻度が第1のアクセス・レベル(すなわち、データが「ホット・データ」であることを示すアクセス・レベル)を上回るかどうかを判断する。ブロック1106において、アクセス頻度が第1のアクセス・レベルを上回ることに応答して、制御は、ブロック1108に移る。ブロック1108において、フラッシュ・コントローラ124は、帯域幅最適化符号語に対するコンテナ・サイズ(例えば、4分の1ページ・コンテナ)を選択する。上述のように、より小さいコンテナの選択(符号化率を低減させるが)は、帯域幅の効率を改善する。ブロック1108から、制御は、次の書き込み要求がデータ・ストレージ・システム120により受信されるまで、ブロック112に移る。
ブロック1106において、アクセス・レベルが第1のアクセス・レベルを上回らないことに応答して、制御は、決定ブロック1110に移る。ブロック1110において、フラッシュ・コントローラ124は、書き込みアクセスのターゲットLBAのアクセス頻度が第2のレベルを下回るかどうかを判断する。ブロック1110において、アクセス頻度が第2のアクセス・レベルを下回ることに応答して、制御は、フラッシュ・コントローラ124が符号化率最適化符号語に対するコンテナ・サイズ(例えば、1ページ・コンテナ)を選択する、ブロック1112に移る。
上述のように、より大きいコンテナの選択は(帯域幅効率を減少させるが)、符号化率を改善する。ブロック1112から、制御は、次の書き込み要求がデータ・ストレージ・システム120により受信されるまで、ブロック1112に移る。ブロック1110において、アクセス・レベルが第2のアクセス・レベルを下回らない場合、制御は、フラッシュ・コントローラ124が、可能な場合は、履歴に基づいてコンテナ・サイズ(例えば、2分の1ページ・コンテナ)を選択する、決定ブロック1114に移る。履歴が利用可能でない場合、フラッシュ・コントローラ124は、デフォルトのコンテナ・サイズを選択することができる。ブロック1112から、制御は、ブロック1122に移る。データ・ペイロードに対するコンテナ・サイズの選択において、2つより多いアクセス・レベルを指定することができることを理解されたい。
図内のフローチャート及びブロック図は、本発明の種々の実施形態によるシステム、方法及びコンピュータ・プログラム製品の可能な実装の、アーキテクチャ、機能及び動作を示す。この点で、フローチャート又はブロック図内の各ブロックは、指定された論理機能を実装するための1つ又は複数の実行可能命令を含む、モジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図内で記された順序ではない順序で生じ得ることにも留意されたい。例えば、連続して示された2つのブロックが、関与する機能に応じて、実際には実質的に同時に実行されることもあり、又はときとして逆順で実行されることもある。ブロック図及び/又はフローチャート図の各ブロック、及びブロック図及び/又はフローチャート図内のブロックの組み合わせは、指定された機能又は動作を実行する専用のハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組み合わせによって実装することができることにも留意されたい。
本発明は、1つ又は複数の実施形態を参照して特に示されるが、当業者であれば、本発明の趣旨及び範囲から逸脱することなく、形態及び細部における種々の変更をなし得ることが理解されるであろう。例えば、特定の機能を指示するフラッシュ・コントローラを含むデータ・ストレージ・システムに関して態様が説明されたが、本発明は、こうした機能を実施する又はこうした機能を実施させるために、プロセッサにおり処理することができるプログラム・コードを格納するストレージ・デバイスを含むプログラム製品として代替的に実装できることを理解されたい。本明細書で用いられる場合、「ストレージ・デバイス」とは、法定製造物品のみを含み、かつ、一時的伝搬媒体それ自体を排除するように具体的に定められる。
さらに、NANDフラッシュ・メモリの使用を含む実施形態が説明されているが、本明細書における本発明は、NANDフラッシュ・メモリと共に使用することに限定されるものではなく、代わりに、いずれかの他の不揮発性ランダム・アクセス・メモリ(NVRAM)技術にも適用可能であることを理解されたい。例えば、開示される技術は、相変化メモリ(PCM)、磁気抵抗RAM(MRAM)及び抵抗RAM(RRAM)に適用することができる。
上述の図面及び以下の特定の構造及び機能の説明は、本出願人が発明したものの範囲又は添付の特許請求の範囲の範囲を制限するために与えられるものではない。むしろ、図面及び説明は、特許保護を求める本発明を作成及び使用するために、当業者に教示するために与えられる。当業者であれば、明確化及び理解のために、本発明の商業的実施形態の全ての特徴が説明又は図示されているわけではないことを理解するであろう。当業者であれば、商業的実施形態についての開発者の最終目標を達成するために、本発明の態様を組み込む実際の商業的実施形態の開発には、多数の実装固有の決定が必要であることも理解するであろう。そうした実装固有の決定は、特定の実装、位置により及びその時々に変化することがある、システム関連、事業関連、政府関連及び他の制約の遵守を含むことがあり、恐らくそれらに限定されない。開発者の努力は、絶対的な意味で非常に複雑で時間がかかるものであり得るが、それにも関わらず、こうした努力は、この開示の利益を受ける当業者にとっては日常業務たり得る。本明細書で開示され教示される本発明には、多数の様々な修正及び代替的形態の余地があることも理解されたい。最後に、これに限定されるものではないが、「a(1つの)」のような単数形の用語の使用は、項目の数を限定することを意図するものではない。
100:データ処理環境
102:プロセッサ・システム
104:プロセッサ
106:ローカル・ストレージ
108:I/Oアダプタ
110:I/Oチャネル
120:データ・ストレージ・システム
122:インターフェース
123:ECCエンジン
124:フラッシュ・コントローラ
125:マトリックス
126:フラッシュ・コントローラ・メモリ
127:エンコーダ/デコーダ
128:CPU
130:CPUメモリ
140:NANDフラッシュ・メモリ・アレイ
300:フラッシュ・モジュール
400:プレーン
500:ブロック
600、700:ページ・ストライプ
800:データ保護ページ
900、1000:ページ
902:2分の1ページ・コンテナ
904:4分の1ページ・コンテナ
102:プロセッサ・システム
104:プロセッサ
106:ローカル・ストレージ
108:I/Oアダプタ
110:I/Oチャネル
120:データ・ストレージ・システム
122:インターフェース
123:ECCエンジン
124:フラッシュ・コントローラ
125:マトリックス
126:フラッシュ・コントローラ・メモリ
127:エンコーダ/デコーダ
128:CPU
130:CPUメモリ
140:NANDフラッシュ・メモリ・アレイ
300:フラッシュ・モジュール
400:プレーン
500:ブロック
600、700:ページ・ストライプ
800:データ保護ページ
900、1000:ページ
902:2分の1ページ・コンテナ
904:4分の1ページ・コンテナ
Claims (16)
- コントローラにより制御される不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させる方法であって、
帯域幅最適化符号語で、アクセス頻度が第1のアクセス・レベルを上回る第1のデータを前記不揮発性メモリ・アレイ内に格納することと、
符号化率最適化符号語で、アクセス頻度が第2のアクセス・レベルを下回る第2のデータを前記不揮発性メモリ・アレイ内に格納することと、
を含む方法。 - 前記第1のデータについての前記アクセス頻度を求めることと、
前記第2のデータについての前記アクセス頻度を求めることと、
をさらに含む、請求項1に記載の方法。 - 前記帯域幅最適化符号語は、前記符号化率最適化符号語より小さいコンテナ内に格納される、請求項1に記載の方法。
- 前記帯域幅最適化符号語及び前記符号化率最適化符号語は、前記不揮発性メモリ・アレイ内に格納されるとき、パディングを含まない、請求項3に記載の方法。
- 前記不揮発性メモリ・アレイは、NANDフラッシュ・メモリ・アレイである、請求項1に記載の方法。
- 前記帯域幅最適化符号語は、4分の1ページ・コンテナ又は2分の1ページ・コンテナ内に格納され、前記符号化率最適化符号語は、1ページ・コンテナ内に格納される、請求項1に記載の方法。
- ターボ製品コードを用いて、前記帯域幅最適化符号語及び前記符号化率最適化符号語を生成することをさらに含み、前記第1のアクセス・レベル及び前記第2のアクセス・レベルは同じ値に対応する、請求項1に記載の方法。
- 不揮発性メモリ・アレイに結合されたコントローラを含み、前記コントローラは、
帯域幅最適化符号語で、アクセス頻度が第1のアクセス・レベルを上回る第1のデータを前記不揮発性メモリ・アレイ内に格納し、
符号化率最適化符号語で、アクセス頻度が第2のアクセス・レベルを下回る第2のデータを前記不揮発性メモリ・アレイ内に格納する、
ように構成される、データ・ストレージ・システム。 - 前記コントローラは、
前記第1のデータについての前記アクセス頻度を求め、
前記第2のデータについての前記アクセス頻度を求める、
ようにさらに構成される、請求項8に記載のデータ・ストレージ・システム。 - 前記帯域幅最適化符号語は、前記符号化率最適化符号語より小さいコンテナ内に格納される、請求項8に記載のデータ・ストレージ・システム。
- 前記帯域幅最適化符号語及び前記符号化率最適化符号語は、前記不揮発性メモリ・アレイ内に格納されるとき、パディングを含まない、請求項10に記載のデータ・ストレージ・システム。
- 前記不揮発性メモリ・アレイは、NANDフラッシュ・メモリ・アレイである、請求項8に記載のデータ・ストレージ・システム。
- 前記帯域幅最適化符号語は、4分の1ページ・コンテナ又は2分の1ページ・コンテナ内に格納され、前記符号化率最適化符号語は、1ページ・コンテナ内に格納される、請求項8に記載のデータ・ストレージ・システム。
- ターボ製品コードを用いて、前記帯域幅最適化符号語及び前記符号化率最適化符号語を生成することをさらに含み、前記第1のアクセス・レベル及び前記第2のアクセス・レベルは同じ値に対応する、請求項8に記載のデータ・ストレージ・システム。
- 不揮発性メモリ・アレイを含むデータ・ストレージ・システムのためのプログラムであって、
前記データ・ストレージ・システムのコントローラにより実行されたとき、前記データ・ストレージ・システムに、
帯域幅最適化符号語で、アクセス頻度が第1のアクセス・レベルを上回る第1のデータを前記不揮発性メモリ・アレイ内に格納することと、
符号化率最適化符号語で、アクセス頻度が第2のアクセス・レベルを下回る第2のデータを前記不揮発性メモリ・アレイ内に格納することと、
前記システムに実行させる、前記ストレージ・デバイス内に格納されるプログラム・コードを含む、プログラム。 - 前記プログラム・コードは、前記コントローラにより実行されたとき、前記データ・ストレージ・システムに、
前記第1のデータについての前記アクセス頻度を求めることと、
前記第2のデータについての前記アクセス頻度を求めることと、
をさらに実行させる、請求項15に記載のプログラム。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/144,158 US9430375B2 (en) | 2013-12-30 | 2013-12-30 | Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency |
US14/144,158 | 2013-12-30 | ||
PCT/JP2014/005293 WO2015102035A1 (en) | 2013-12-30 | 2014-10-20 | Techniques for storing data in bandwidth optimized or coding rate optimized code words based on data access frequency |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017504920A JP2017504920A (ja) | 2017-02-09 |
JP6342013B2 true JP6342013B2 (ja) | 2018-06-13 |
Family
ID=53481903
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2016561095A Active JP6342013B2 (ja) | 2013-12-30 | 2014-10-20 | 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム |
Country Status (4)
Country | Link |
---|---|
US (1) | US9430375B2 (ja) |
JP (1) | JP6342013B2 (ja) |
TW (1) | TW201526002A (ja) |
WO (1) | WO2015102035A1 (ja) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10454845B2 (en) | 2015-04-22 | 2019-10-22 | ColorTokens, Inc. | Object memory management unit |
CN107135411B (zh) * | 2016-02-26 | 2020-04-24 | 掌赢信息科技(上海)有限公司 | 一种调整视频码率的方法及电子设备 |
US9934086B2 (en) | 2016-06-06 | 2018-04-03 | Micron Technology, Inc. | Apparatuses and methods for selective determination of data error repair |
US11321636B2 (en) * | 2019-07-18 | 2022-05-03 | Innogrit Technologies Co., Ltd. | Systems and methods for a data storage system |
US10915400B1 (en) * | 2019-11-08 | 2021-02-09 | Micron Technology, Inc. | Dynamic over provisioning allocation for purposed blocks |
Family Cites Families (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6324620B1 (en) * | 1998-07-23 | 2001-11-27 | International Business Machines Corporation | Dynamic DASD data management and partitioning based on access frequency utilization and capacity |
KR20020079790A (ko) | 2000-01-20 | 2002-10-19 | 노오텔 네트웍스 리미티드 | 가변 레이트 패킷 데이타 애플리케이션에서 소프트 결합을 사용하는 하이브리드 arq 방법 |
US7346833B2 (en) | 2002-11-05 | 2008-03-18 | Analog Devices, Inc. | Reduced complexity turbo decoding scheme |
US7424577B2 (en) * | 2005-08-26 | 2008-09-09 | Network Appliance, Inc. | Dynamic optimization of cache memory |
JP2007104708A (ja) | 2006-11-27 | 2007-04-19 | Renesas Technology Corp | データ処理方法 |
TW201334425A (zh) | 2007-01-24 | 2013-08-16 | Qualcomm Inc | 可變大小之封包的低密度同位檢查編碼與解碼 |
US8806288B2 (en) | 2009-03-13 | 2014-08-12 | Sharp Laboratories Of America, Inc. | Systems and methods for providing unequal error protection code design from probabilistically fixed composition codes |
JP2010257020A (ja) * | 2009-04-22 | 2010-11-11 | Hitachi Ltd | データマイグレーション管理装置及び管理方法 |
US8560765B2 (en) * | 2009-09-08 | 2013-10-15 | Lsi Corporation | Systems and methods for variable level use of a multi-level flash memory |
US20120155167A1 (en) * | 2010-12-21 | 2012-06-21 | Kabushiki Kaisha Toshiba | Non-volatile storage device, information processing system and write control method of non-volatile storage device |
CN103282890B (zh) * | 2011-01-12 | 2015-11-25 | 株式会社索思未来 | 程序执行装置以及编译器系统 |
US8569765B2 (en) * | 2011-07-20 | 2013-10-29 | Force Mos Technology Co., Ltd. | MOSFET-Schottky rectifier-diode integrated circuits with trench contact structures |
US8539142B2 (en) * | 2011-09-30 | 2013-09-17 | Hitachi, Ltd. | Storage system comprising nonvolatile semiconductor storage media |
CN103999061B (zh) * | 2011-12-22 | 2016-08-17 | 国际商业机器公司 | 存储器件存取系统 |
US8862967B2 (en) | 2012-03-15 | 2014-10-14 | Sandisk Technologies Inc. | Statistical distribution based variable-bit error correction coding |
US20140122774A1 (en) * | 2012-10-31 | 2014-05-01 | Hong Kong Applied Science and Technology Research Institute Company Limited | Method for Managing Data of Solid State Storage with Data Attributes |
US9158725B2 (en) * | 2012-11-20 | 2015-10-13 | Freescale Semiconductor, Inc. | Flexible control mechanism for store gathering in a write buffer |
JP6326799B2 (ja) * | 2013-12-11 | 2018-05-23 | 株式会社ニコン | 電子機器 |
-
2013
- 2013-12-30 US US14/144,158 patent/US9430375B2/en not_active Expired - Fee Related
-
2014
- 2014-10-20 JP JP2016561095A patent/JP6342013B2/ja active Active
- 2014-10-20 WO PCT/JP2014/005293 patent/WO2015102035A1/en active Application Filing
- 2014-11-05 TW TW103138424A patent/TW201526002A/zh unknown
Also Published As
Publication number | Publication date |
---|---|
TW201526002A (zh) | 2015-07-01 |
JP2017504920A (ja) | 2017-02-09 |
US9430375B2 (en) | 2016-08-30 |
US20150186260A1 (en) | 2015-07-02 |
WO2015102035A1 (en) | 2015-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10884914B2 (en) | Regrouping data during relocation to facilitate write amplification reduction | |
US10445016B2 (en) | Techniques for storage command processing | |
JP6855102B2 (ja) | 不揮発性メモリ・システムにおけるマルチページ障害の回復 | |
US9684468B2 (en) | Recording dwell time in a non-volatile memory system | |
US10592110B2 (en) | Techniques for dynamically adjusting over-provisioning space of a flash controller based on workload characteristics | |
US9690702B2 (en) | Programming non-volatile memory using a relaxed dwell time | |
US9558107B2 (en) | Extending useful life of a non-volatile memory by health grading | |
US9274882B2 (en) | Page retirement in a NAND flash memory system | |
US8972776B2 (en) | Partial R-block recycling | |
US9858141B2 (en) | Data deduplication with reduced hash computations | |
US9632702B2 (en) | Efficient initialization of a thinly provisioned storage array | |
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 | |
US9524116B1 (en) | Reducing read-after-write errors in a non-volatile memory system using an old data copy | |
US9390003B2 (en) | Retirement of physical memory based on dwell time | |
US20180165021A1 (en) | Adaptive health grading for a non-volatile memory | |
JP6342013B2 (ja) | 不揮発性メモリ・アレイを含むデータ・ストレージ・システムを動作させるための方法、システム及びコンピュータ・プログラム | |
JP2020510931A (ja) | 非2値コンテキスト・ミキシング方法、非2値コンテキスト・ミキシング圧縮器および圧縮解除器を備えるデータ・ストレージ・システム、ならびにコンピュータ・プログラム | |
US20170115900A1 (en) | Dummy page insertion for flexible page retirement in flash memory storing multiple bits per memory cell | |
US11385833B2 (en) | Method and system for facilitating a light-weight garbage collection with a reduced utilization of resources | |
US9417809B1 (en) | Efficient management of page retirement in non-volatile memory utilizing page retirement classes | |
US20200244289A1 (en) | Data writing method, memory control circuit unit and memory storage device |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170815 |
|
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: 20180417 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20180515 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6342013 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |