(58)【調査した分野】(Int.Cl.,DB名)
前記多層メモリ構造が、各々が異なるデータ転送属性および最高から最低まで順次優先度順に配置された対応するメモリセル構造を有する、複数の不揮発性メモリ層を備える、請求項1または2に記載の方法。
前記記憶するステップは、前記第1の不揮発性層のデータI/O転送速度に対する前記第2の不揮発性層のデータI/O転送速度に応答して、前記多層メモリ構造内の前記複数の使用可能な下位層から、前記第2の不揮発性層を選択することをさらに含む、請求項1に記載の方法。
前記第1または第2の不揮発性層のうちの選択された1つが、書き換え可能な不揮発性メモリセルを備え、前記第1または第2の不揮発性層のうちの残りの1つが、消去可能な不揮発性メモリセルを備える、請求項1〜請求項8のいずれか1項に記載の方法。
前記多層メモリ構造が、データ転送速度に関して最高速層から最低速層の順番に複数の層を提供し、前記第2の不揮発性層が前記第1の不揮発性層より低速であり、前記方法が、前記第1の不揮発性層内に第2のデータオブジェクトを記憶し、および第3の不揮発性層内に前記第2のデータオブジェクトの少なくとも1つのビット誤りを訂正するために対応する第2のECCデータセットを記憶することをさらに含み、前記第3の不揮発性層は前記第1の不揮発性層より高速である、請求項1に記載の方法。
各々が異なるデータ転送属性と対応するメモリセル構造を有する、複数の不揮発性メモリ層を備える、多層メモリ構造であって、前記メモリ層が、最高速から最低速のデータI/Oデータ転送速度能力の優先度順に配置された、多層メモリ構造と、
要求者によって供給された1つ以上のデータブロックに応答してデータオブジェクトを生成し、読み戻し操作中に前記データオブジェクトの選択した数までの読み戻しビット誤りを検出するためのECCデータセットを生成し、前記多層メモリ構造の第1の選択されたメモリ層にデータオブジェクトを記憶し、前記多層メモリ構造の異なる第2の選択されたメモリ層に前記ECCデータセットを記憶するように適合されたストレージマネージャと、
を備え、
前記ストレージマネージャが、前記データオブジェクトのサイズに対する前記ECCデータセットのサイズに応答して、前記多層メモリ構造内の複数の使用可能な下位層から、前記第2の選択されたメモリ層を選択する、装置。
【発明を実施するための形態】
【0004】
本開示は概して、多層メモリ構造におけるデータの管理に関する。
データ記憶装置は概して、メモリ内にデータのブロックを記憶するように動作する。装置は、記憶されたデータの読み取り要求に応答して、ブロックを順次取得することができるように、ブロックの物理的場所を追跡するためにデータ管理システムを採用することができる。装置には、異種のメモリが異なるレベル、または層に存在する、階層(多層)メモリ構造が提供されてもよい。層は、異なる属性を有するデータおよび作業負荷能力に対応するように選択された優先度順に配置される。
【0005】
多様なメモリ層は、消去可能または書き換え可能であってもよい。消去可能なメモリ(例えば、フラッシュメモリ、複数回書き込み可能な光ディスク媒体等)は概して、新しいデータを所与のメモリ場所に書き込むことが可能になる前に完全消去作業を必要とする、消去可能な不揮発性メモリセルから構成される。このため、消去可能なメモリにおいて、更新されたデータセットを新しい異なる場所へ書き込み、以前に記憶されたデータのバージョンを無効と印すことが一般的である。
【0006】
書き換え可能なメモリ(例えば、動的ランダムアクセスメモリ(DRAM)、抵抗ランダムアクセスメモリ(RRAM(登録商標))、磁気ディスク媒体等)は、揮発性であっても、または不揮発性であってもよく、介在完全消去操作を必要とすることなく、更新されたデータセットを所与の場所に既存する、それより古いバージョンのデータ上に上書きできるように、書き換え可能な不揮発性メモリセルから形成される。
【0007】
誤り訂正符号(ECC)データおよびメタデータ等の異なる種類の制御情報は、ユーザーデータの書き込みおよびその後の読み戻しを支援するメモリ構造に記憶することができる。ECCデータによって、メモリから読み戻されるデータオブジェクトのコピー内の選択された数までのビット誤りの検出および/または訂正を促進することが可能になる。メタデータユニットは、メモリ空間内に記憶された論理的素子(論理的ブロックアドレス、LBA等)とメモリ空間の物理的場所(物理的ブロックアドレス、PBA等)との間の関係を追跡する。メタデータはさらに、累積された書き込み/完全消去/読み取りの合計数、経過時間、ドリフトパラメトリック、推定または測定された磨耗等、記憶されたユーザーデータに関連する状態情報および関連のメモリ場所も含むことができる。
【0008】
本開示の多様な実施形態は、多層メモリ構造内のデータ管理に対する改善された手法を提供する。以下に説明するように、データオブジェクトは、1つ以上のユーザーデータブロック(例えば、LBA)から形成され、多層メモリ構造内の選択された層に記憶される。ECCデータセットは、各データオブジェクトに対して生成され、データオブジェクトを記憶するために使用された層よりも下位層または上位層等、異なる層に記憶される。ECCデータのサイズおよび構成は、対応するデータオブジェクトに関連するデータ属性に関係して、およびECCデータが記憶される選択された層のメモリ属性に関係して選択されてもよい。メタデータはさらに、データオブジェクトおよびECCデータの場所を追跡するように生成されてもよく、メタデータは、データオブジェクトおよびECCデータをそれぞれ記憶するために使用された層とは異なる第3の層に記憶されてもよい。
【0009】
このように、特定のストレージ固有の属性を有するデータオブジェクトは、ペアまたはグループ化することができ、これらの属性に一致する適切なメモリ層に記憶することができる。ECCデータを生成して、ECCデータの属性、およびデータオブジェクトに関連して予想または観察された作業負荷に一致する適切なメモリ層に記憶することができる。
【0010】
本明細書に開示される多様な実施形態のこれらおよび他の特徴は、まず、データ記憶装置100を表す機能ブロック図を提供する
図1を確認することから、理解することができる。装置100は、コントローラ102と、多層メモリ構造104とを含む。コントローラ102は、装置100の最上位の制御を提供し、メモリ構造104は、外部のホストデバイス(個別に図示せず)等の要求者エンティティから/へのユーザーデータを記憶し、取得する。
【0011】
メモリ構造104は、MEM1〜3と記されたいくつかのメモリ層106、108、および110を含む。多様な層内のメモリの数および種類は所望に応じて変動し得る。一般に、メモリ構造104内の上位層は、さらに小型および/または高速のメモリから構築されてもよく、メモリ構造内の下位層は、さらに大型および/または低速のメモリから構築される等、優先度順が提供される。他の特徴によって層の優先度順が決定されてもよい。
【0012】
1つの完全な例を提供する目的で、システム100は、より低いメモリ層のうちの少なくとも1つが、消去可能フラッシュメモリを利用する主なストアを提供するように、ソリッドステートドライブ(SSD)、携帯型サムドライブ、メモリスティック、メモリーカード、ハイブリッド記憶装置等、フラッシュメモリベースの記憶装置として考えられる。上位のメモリ層のうちの少なくとも1つは、抵抗ランダムアクセスメモリ(RRAM)、相変化ランダムアクセスメモリ(PCRAM)、スピントルク転送ランダムアクセスメモリ(STRAM)等の書き換え可能な不揮発性メモリを提供する。これは例示に過ぎず、限定ではない。揮発性または不揮発性キャッシュレベル、バッファ等の他のレベルがメモリ構造に組み込まれてもよい。
【0013】
図2は、消去可能なメモリセル122のアレイから構成される消去可能なメモリ120を図示し、この場合、制限ではなく、フラッシュメモリセルとして特徴付けられる。消去可能なメモリ120は、
図1のメモリ構造104の多様なメモリ層のうちの1つ以上として利用することができる。フラッシュメモリセルの場合、セル122は概して、蓄積された電荷を蓄えるように適合された浮動ゲートを含むnMOSFET(nチャネル金属酸化膜半導体電界効果トランジスタ)を有するプログラマブル素子の形式をとる。各フラッシュメモリセル122のプログラム状態は、セルをソースとドレイン間の導電状態にするためにセル122の制御ゲートに印加されることが必要な電圧量に関係して確立することができる。
【0014】
図2のメモリセル122は、いくつかの行および列に配置され、セル122の列の各々がビット線(BL)124に接続され、セル122の行の各々が個別のワード線(WL)126に接続される。データは、データのページとしてセルの各行に沿って記憶されてもよく、選択されたユニットのメモリストレージ(8192ビット等)を表してもよい。
【0015】
上述のように、フラッシュメモリセル122等の消去可能なメモリセルは、セルあたり1つ以上のビットの形式でデータを記憶するように適合することができる。しかしながら、新しく更新されたデータを記憶するために、セル122は、関連する浮動ゲートから蓄積電荷を除去するために完全消去操作の適用が必要である。したがって、フラッシュメモリセル群122は、完全消去ブロックに配置されてもよく、ユニットとして消去可能である最小数のセルを表す。
【0016】
図3は、書き換え可能なメモリセル132のアレイから構成された書き換え可能なメモリ130を図示する。各メモリセル132は、スイッチングデバイス(MOSFET)136と直列の抵抗検知素子(RSE)134を含む。各RSE134は、プログラムされた電気抵抗に関係して異なるプログラムされたデータ状態を示すプログラマブルメモリ素子である。書き換え可能なメモリ素子132は、RRAM、STRAM、PCRAM等、任意の数の適切な形式をとることができる。
【0017】
上述のように、
図3のセル134等の書き換え可能なメモリセルは、セルを周知の状態にリセットするために完全消去操作を必ずしも必要とせず、新しく更新されたデータを受容することができる。多様なセル134は、ビット線(BL)138、ソース線(SL)140、およびワード線(WL)142を介して相互に接続される。2つの制御線(例えば、ビット線およびソース線)だけを各メモリセルに相互接続するクロスポイント型アレイを含む、他の配置が考えられる。
【0018】
図4は、
図1の多層メモリ構造104において有用な選択されたメモリ層150を図示する。メモリ層150は、データオブジェクト、ECCデータ、およびメタデータの記憶空間152、154、および156をそれぞれ提供するように配置される。これは例示に過ぎず、個々の層は全体として、1つの種類のデータ(例えば、データオブジェクト)の記憶専用であってもよく、または、これらの3つの異種のデータセットのうちの2つだけの記憶専用であってもよい等、限定ではない。
【0019】
これらの異種のデータセットのための所与のメモリ層内の実際の空間量もまた大幅に変動してもよく、例えば、所与のメモリ層は、90%がデータオブジェクトの記憶、および10%がメタデータの記憶専用であるように配置される場合がある。以下に説明するように、所与のメモリ層内のECCデータおよびメタデータ(例えば、
図4のメモリ空間154、156内のデータ)は、その層内のデータオブジェクト(例えば、
図4のメモリ空間152のデータセット)に必ずしも関係しなくてもよい。
【0020】
メモリ構造
104内のデータオブジェクトのために全体的に使用可能な記憶空間を増加し、これと同時にさらに高いレベルのI/Oデータ転送速度性能(例えば、単位時間あたりに転送されるデータの単位)を備える上位層内のデータオブジェクトのために利用可能な空間を増加すると、要求者側の全体的な性能応答性レベルを改善する傾向が見られる場合があることが理解されるであろう。最終的に、データの書き込みおよび読み取り操作の一般的な目標は、効率的な手法でユーザーデータを要求者からおよび要求者へ転送することである。
【0021】
図
5は、データオブジェクト162、ECCデータ(またはECCデータセット)164、およびメタデータ(またはメタデータユニット)166から構成されるデータ構造160の例示的形式を図示する。多数の事例において、対応するデータオブジェクトに比較して(合計ビットの点で)ECCデータおよびメタデータユニットのサイズが約10%以下である等、データオブジェクト162は、対応するECCデータ164およびメタデータユニット166より相当大きい。いずれにしても、データオブジェクト、ECCデータセット、およびメタデータユニットのそれぞれのサイズは、データオブジェクト内のデータブロック(LBA)の数、適用されたECCのレベル、およびメタデータの粒度に依存することになる。本明細書に使用するように、メタデータ粒度の粒度が低下すると、ユーザーデータの記述が大きくなる(詳細になる)ことを暗示するので、粒度が低下すると、メタデータユニットのサイズが大きくなる傾向が見られる場合がある。
【0022】
図5には、多様なデータセット162、164、および166の例示的な内容を記載する。コンテンツの他の形式および配置を提供することができる。データオブジェクト162は、対処可能なユニットとして管理され、要求者(ホスト)によって供給される1つ以上のデータブロックから形成される。データオブジェクトは、したがって、ヘッダー情報、ユーザーデータ、およびハッシュ値等の他の制御情報を含むことができる。
【0023】
ヘッダー情報は、データオブジェクト内に記憶されたユーザーデータブロックに関連する論理アドレス(例えば、LBA値またはLBAの範囲)等、適切な識別子情報を提供する。時刻/日付スタンプ情報およびステータス情報等の他のデータがヘッダーに組み込まれてもよい
。ハッシュ値は、書き込み増幅の高速拒否処理のために、Shaハッシュ等、適切なハッシュ関数を使用してユーザーデータブロックから形成されてもよい。例えば、ハッシュ値は、書き込み操作中に同じLBAまたはLBAの範囲のより新しいバージョンの1つ以上のハッシュ値に比較することができる。ハッシュ値が一致すると、より新しいバージョンは、同じユーザーデータセットの重複セットを表す場合があるので、メモリ構造104に記憶される必要がない場合がある。
【0024】
ECCデータ164は、データオブジェクト162内の選択された数までのビット誤りを検出および/または訂正するために演算することができる、BCH(Bose、Ray−Chaudhuri and Hocquenghem)符号またはリードソロモン符号等の巡回誤り訂正符号、低密度パリティ検査(LDPC)符号、排他的論理和(XOR)値、アウター符号(outercode)、IOEDC値、チェックサム、および他の形式の制御データ等、多種多様の適切な形式をとることができる。選択されたデータオブジェクトのECCデータセットとして、2つ以上の種類のECC符号データが生成されてもよい。
【0025】
ECCデータのサイズおよび強度を選択することができ、その後、データオブジェクトの属性ならびにECCデータが記憶されるメモリ層の属性(例えば、書き込み/完全消去/読み取り回数、経過時間、ドリフトパラメトリック等)に基づいて調整することができる。一般に、ECC符号語のサイズは概して、ECCのストレージフットプリントのサイズ(符号率)を決定する。同様に、サブ符号語の粒度は、操作中のECCに関する読み取り・訂正・書き込み操作の可能性の点から選択されてもよい。
【0026】
ECCデータセットの強度は概して、選択された数までのデータビット誤りの検出、および利用される場合、訂正の際に、ECCデータセットがどのように効率的であるかに関係する。ECCデータセットの強度が高くなると、概して、弱いECCデータセットよりも多くの誤りを検出し、訂正する。
【0027】
ECC保護を強化するために多層構造のECCを使用することができる。BCH等の第1の種類の符号は、データオブジェクトに適用することができる。リードソロモン等の第2の種類の符号は、次いで、BCH符号語の一部または全てに適用することができる。他の層は、全体的に所望される強度を達成するために適用することができる。ECCの強度は、関連データの記憶特徴に基づいて選択されてもよく、強い性能(高耐久性、良好な保持特徴、低いデータビット誤り等)を示すメモリ層は、相対的により弱いECCスキームの使用を必要としてもよいことに注意されたい。対照的に、より古い、磨耗した、および/または相対的に耐久性が低いメモリは、より強いECCの使用を必要としてもよい。本実施形態において、ECCは、データオブジェクトとは別に記憶されるので、保護されたデータオブジェクトと同じ層内にECCを保持する制約なく、適切なレベルのECCが適用されることを可能にする柔軟性が提供される。
【0028】
メタデータユニット166は、装置100がデータオブジェクトおよびECCデータを検索することを可能にし、したがって、データオブジェクト(DO)アドレス情報、ECCアドレス情報、データおよびメモリ属性情報、1つ以上の前向きポインタ、およびステータス値等、多種多様な制御情報を記憶する。他のメタデータの形式を使用することができる。アドレス情報174は、データオブジェクト162およびECCデータ164の物理アドレスをそれぞれ識別し、論理アドレスから物理アドレスへの変換情報も提供してもよい。物理アドレスは、データセットを記憶する層(例えば、
図1のMEM1〜3)に加えて、行(キャッシュ線)、ダイ、アレイ、プレーン、完全消去ブロック、ページ、ビットオフセット、および/または他のアドレス値等の適切なアドレス識別子を使用してデータセットが記憶されている関連層内の物理的場所を含む。
【0029】
データ属性情報は、ステータス、改訂レベル、タイムスタンプデータ、作業負荷指標等、データオブジェクトに関連する属性を識別する。メモリ属性情報は、データオブジェクトおよび/またはECCデータが記憶される物理的場所に関連するパラメトリック属性を構成する。例として、書き込み/完全消去の合計回数、読み取りの合計回数、推定または測定された磨耗効果、電荷または抵抗ドリフトパラメータ、ビット誤り率(BER)測定値、経過時間等が挙げられる。これらのそれぞれのセットの属性は、コントローラによって維持、および/またはその前のメタデータエントリに基づいて更新することができる。
【0030】
前向きポインタは、メモリ構造104内のメタデータの他のコピーを参照することによって、データセット(例えば、データオブジェクトおよび/またはECCデータ)の最新バージョンを検索することを可能にするために使用することができる。ステータス値は、関連データセットの最新ステータス(例えば、無効、有効等)を示す。所望に応じて、比較的小さいメタデータECC値を生成することができ、読み戻し中のメタデータの検証のためにメタデータユニットに付加することができる。
【0031】
図6は、いくつかの実施形態に従って操作可能な装置100のストレージマネージャ170を示す。ストレージマネージャ170は、コントローラ機能の一部として形成されてもよい。ストレージマネージャ170は、データオブジェクトエンジン172、ECCエンジン174、およびメタデータエンジン176を含む、いくつかの操作モジュールを含むように示される。これらのそれぞれのエンジンの各々は、要求者によって供給されたデータブロック(LBA)に応答して、データオブジェクト、ECCデータ、およびメタデータユニットを生成する。
【0032】
図1の多層メモリ構造104は、
図6において、NV−RAMモジュール178、RRAMモジュール180、PCRAMモジュール182、STRAMモジュール184、フラッシュモジュール186、およびディスクモジュール188を含む、いくつかの例示的な層を含むように示される。これらは例に過ぎず、所望に応じて多様な層において、任意の数の異種および配置のメモリモジュールを使用することができる。
【0033】
NV−RAM178は、不揮発性状態に記憶されたデータを保持するために、専用電池バックアップまたは他の機構を備える揮発性SRAMまたはDRAMを備える。RRAM180は、界面にわたるイオンの移動に応答して、異なるプログラムされた電気抵抗レベルに関係してデータを記憶する抵抗検知メモリセルのアレイを備える。PCRAM182は、結晶構造(低抵抗)と非結晶(高抵抗)との間の物質の相における変化に基づいて異なるプログラムされた抵抗を示す、相変化抵抗検知メモリセルのアレイを備える。
【0034】
STRAM184は、固定磁気配向を備える物質の基準レイヤ、および可変磁気配向を有する自由レイヤから構成される少なくとも1つの磁気トンネル接合点を各々有する抵抗検知メモリセルのアレイを備える。各MTJの有効電気抵抗、したがって、プログラム状態は、自由レイヤのプログラムされた磁気配向に関係して確立することができる。
【0035】
フラッシュメモリ186は、浮動ゲート構造上に蓄積された電荷量に関係してデータを記憶するフラッシュメモリセルの配列を備える。全て書き換え可能な不揮発性メモリセルを備えると考えられる、NV−RAM、RRAM、PCRAM、およびSTRAMとは異なり、フラッシュメモリセルは消去可能であるので、新しいデータを書き込むことが可能になる前に概して、完全消去操作が必要である。フラッシュメモリセルは、シングルレベルセル(SLA)またはマルチレベルセル(MLC)として構成することができるので、各メモリセルは、単一のビット(SLCの場合)、または複数のビット(MLCの場合)を記憶する。書き換え可能なメモリ層内のメモリセルは、所望に応じてMLCとして構成することもできる。
【0036】
ディスクメモリ188は、ハードディスクドライブ(HDD)または類似の記憶装置等、磁気回転媒体であってもよい。所望に応じて、他の形式のソリッドステートおよび/またはディスクメモリ、リモートサーバーメモリ、揮発性および不揮発性バッファレイヤ、プロセッサキャッシュ、中間キャッシュ等を含む、層の他の順番、組み合わせ、および数を利用することができる。
【0037】
各層はその独自の関連メモリ記憶属性(例えば、容量、データユニットのサイズ、I/Oデータ転送速度、耐性等)を有すると考えられる。最上位層(例えば、NV−RAM178)は、最高速のI/Oデータ転送速度性能(または他の適切な性能メトリクス)を有する傾向があり、最下位層(例えば、ディスク188)は、最低速の性能を有する傾向がある。残りの層の各々は、ほぼ順次の様式で中間の性能特徴を有する。層のうちの少なくともいくつかは、割り当てプールから割り当てられ、データを記憶するために使用され、その後の再割当のために割り当てプールに戻される前にガーベッジコレクション操作中に定期的にリセットされる、ガーベッジコレクションユニット(GCU)の形式に配置されたデータセルを有してもよい。
【0038】
図6のストレージマネージャ170によって生成されたそれぞれのデータオブジェクト、ECCデータ、およびメタデータは、異なるメモリ層178〜188に記憶されると考えられる。一例において、データオブジェクトはフラッシュメモリ186に記憶され、データオブジェクトのECCデータはRRAMモジュール180に記憶され、メタデータはPCRAMモジュール182に記憶される。各データセットには適切な層が選択され、データセットは、観察された使用パターンおよび測定されたメモリパラメトリックに基づいて異なる層へ順次移動されてもよい。
【0039】
図7は、いくつかの実施形態による
図6からのデータオブジェクトエンジン172を図示する。データオブジェクトエンジン172は、要求者からデータブロック(LBA)、ならびに、メモリ構造104に以前に記憶されている場合は、データブロックの前のバージョンに関連する装置100に記憶された既存のメタデータ(MD)を受信する。データベース190に保持されたメモリ層属性データもまた、エンジン172によって利用されてもよい。
【0040】
エンジン172は、データオブジェクトの適切な形式および場所を判定するためにデータブロックを分析する。データオブジェクトは、データブロックの内容ならびにデータオブジェクトに関連する多様なデータ関連属性を使用して、DO
生成機能192によって生成される。層選択モジュール194は、生成されたデータオブジェクトを記憶するために、メモリ構造104の適切なメモリ層を選択する。
【0041】
全体的なデータオブジェクトのサイズを含む、データオブジェクトの配置は、選択されたメモリ層に一致してもよく、例えば、ページレベルデータセットは、フラッシュメモリ186に記憶するために使用される場合があり、LBAサイズデータセットは、RRAM、PCRAM、およびSTRAMメモリ180、182、184のために使用される場合がある。他のユニットサイズを使用することができる。データオブジェクトのユニットサイズは、要求者レベルで利用されるユニットサイズに対応してもしなくてもよく、例えば、要求者は、公称512バイトのサイズのユーザーデータのブロックを転送してもよい。データオブジェクトは、この同じユーザーデータ容量を有してもよく、または、要求者ブロックサイズの非整数倍である量を含む、ユーザーデータよりいくらか大きいまたは小さい量を有してもよい。
【0042】
DO層選択モジュール194によって識別されたDO記憶場所は、選択されたメモリ層内の示された物理アドレスにデータオブジェクト(DO)を記憶するように指示するために、メモリモジュール104への入力として提供される。データオブジェクトおよびDO記憶場所情報もまた、ECCおよびメタデータエンジン174、176へ転送される。
【0043】
図8において、ECCエンジン174は、ECC
生成機能202およびECC層選択モジュール204を含むように示される。ECCエンジン174は、データオブジェクトの適切なサイズ、強度、およびレベル、ならびにECCデータを記憶する適切なメモリ層を生成するために、データオブジェクト、データオブジェクトの物理的場所(例えば、層およびその中の物理アドレス)、多様なデータオブジェクト関連属性、およびメモリ層属性データを使用する。
【0044】
図
6のメタデータエンジン176は、図
9において、メタデータ(MD)生成機能212およびMD層選択モジュール214を含むように示される。MDエンジン176は、メタデータユニット166の形式、粒度、および記憶場所を選択するために、データベース190からのDO属性、DO記憶場所、ECC記憶場所、既存のMD(ある場合)、およびメモリ層情報等、いくつかの入力を使用する。いくつかの事例において、複数のデータオブジェクトおよび/またはECCデータセットは合わせてグループ化されてもよく、単一のメタデータユニットとして説明される。
【0045】
MDテーブル216等の最上位のMDデータ構造は、別のメモリ場所に保持、またはメモリ構造104を通じて分散されてもよく、今後の参照のためにメタデータの物理的場所を反映するように更新されてもよい。MDデータ構造216は、論理アドレス(例えば、LBA)を関連するメタデータユニットに相関させる、参照テーブルの形式であってもよい。
【0046】
ECCデータは、データオブジェクトのサイズの相対的に小さい割合である傾向を見ることができるため、メモリ構造104内の上位層は、特にECCが反復して復元され、更新される、相対的に書き込み強度が高い環境では、ECCデータの記憶に適切な場所であってもよい。
図10は、メモリ構造104内の上位メモリ層220内のECCデータの記憶、およびこれらの条件下のメモリ構造内の相対的に下位メモリ層222への対応するデータオブジェクトの記憶を図示する。それぞれ上位および下位層220、222は、下位層222が上位層220と比較してメモリ構造104の優先度順で下位にある限り、
図6のそれぞれの例示層のうちの任意、または他のメモリ層に対応することができることを理解されたい。
【0047】
逆に、
図11に図示するように、相対的により小さいECCフットプリントのために、データオブジェクトを上位層220に記憶し、ECCデータを下位層222に記憶することが所望されてもよい。対応するデータオブジェクトに比較して、ECCデータをメモリ構造104内の下位層に記憶することで、データオブジェクトの書き込みとECCの書き込みとの間の速度の一致を促進することができる。
【0048】
例えば、ECCデータがデータオブジェクトのサイズの約10%であり、下位層222が上位層220よりも約10倍(10X)遅い(例えば、下位層222は、上位層220のデータ転送速度の約10%であるデータI/O転送速度を有する)場合、データオブジェクトを上位層220に書き込みすることと並行してECCを下位層222に書き込むことは、両方のデータセットを上位層220に書き込むよりも高速である場合がある。これは、データオブジェクトを上位層220に書き込むためにかかる時間はECCデータを下位層222に書き込むためにかかる時間とほぼ同じである傾向があるためであり、両方はおそらく同じ書き込み間隔中に書き込むことができる。
【0049】
ECCをさらに低速の、下位層222に記憶しても、さらに高速の上位層220からデータオブジェクトを読み戻すために必要な時間中に、ECCが下位層222から実質的に復元できるため、読み戻し処理中に一切顕著な遅延の影響を及ぼさない。また、ECCをさらに低速の下位層222に記憶することで、追加のデータオブジェクトセットを記憶するために、上位層220の空間を空けることになる。
【0050】
本明細書に開示されるように多層構造のECCを使用する(例えば、関連データオブジェクトからのECCを異なる層に記憶する)ことで、より大きい符号語は、ECCアルゴリズムのより効率的な使用を提供するので、ECCデータセットのサイズは、効率を相当増加させることが可能である。ECCのサブセットが更新されると必ず発生するどの書き込み増幅も、ECCが対応するデータオブジェクトを記憶するメモリよりも高い耐性を備えるメモリに位置することができるために、受容することができる。多層構造のECCを提供することは、複数のフラッシュメモリページにわたるように、異なるECC指示の生成も促進する。利用されたECC符号語のサイズおよび強度は、メモリおよびデータの記憶および作業負荷属性に基づいて動的に調整することができる。言うまでもなく、書き換え可能なメモリ層にECCデータを書き込むことによって、インプレースの更新操作を可能にするので、更新されたバージョンのECCデータを直接前のバージョンのECCデータ上に書き込むことができ、それによって、前のバージョンを置換する。
【0051】
多層構造のECCの別の利点は、上述のように、メモリの一層全体がデータオブジェクトの記憶専用にすることができ、それによって、データの属性に最適な場所のデータの記憶を促進する。代替として、所与の層は、データオブジェクトおよびECCデータ(およびメタデータ)の専用空間を有することができ、ECCデータ(およびメタデータ)が異なる層のデータオブジェクトを記述する。これによって、ストレージマネージャは、データ記憶層、ECC記憶層、データ+ECC記憶層等のように、メモリ層の最良の利用を動的に選択することが可能になる。所与の層が経時的に磨耗し、性能の低下を示すと、ECCに割り当てられたメモリ層のパーセントを増加することができる(そして、さらに大きいレベルのECCをその層に記憶されたデータに適用することができる)。記憶およびメモリ属性に基づいた動的割り当てによって、ローカライズされた作業負荷レベルが順応して達成されることも可能になり、キャッシュヒットおよび他の効率的なデータ転送を改善する。
【0052】
いくつかの事例において、多様なデータセット(データオブジェクト、ECCデータセット、メタデータユニット)はそれぞれ、同じまたは異なる相対的に上位の層に記憶することができ、経時的に現在のバージョン(有効)のデータセットを順番に下位層へ移動することができる。規定では、経時的に所与の部分のメモリ(ガーベッジコレクションユニット等)が無効(より古いバージョン)および有効(現在のバージョン)データの両方を有する場合、有効なデータは、最も長い期間更新されたという点で「最古の」データになる傾向がある。ガーベッジコレクション処理中に有効なデータセットを下位層へ下げることで、それによって各種のデータが、メモリ構造内のその独自の適切なレベルを達成することを可能にすることができる。
【0053】
データアクセス操作はその後、前述の検討に従って、メモリ構造104に記憶されたデータオブジェクト、ECCデータ、およびメタデータユニットで実行することができる。
図12は、以前に記憶されたユーザーデータを要求者に返すために、読み取り操作中に実行することができる多様なステップを表す。
【0054】
ブロック230で、読み取り操作中、選択されたLBAまたはLBAの範囲に対する読み取り要求が受信され、MDデータ構造190または他のデータ構造にアクセスすることによって、選択されたLBAと関連するメタデータを検索することで達成される。ブロック232で、メタデータユニットが記憶されている物理的場所が識別され、読み取り操作が実行されて、メタデータユニットをローカルメモリに呼び出す。ローカルメモリは、装置100の揮発性バッファメモリであってもよい。
【0055】
ブロック234で、データオブジェクトの物理アドレスおよびECCデータの物理アドレスがメタデータから抽出され、これらのアドレスは、ブロック236で使用されて、それぞれの読み取り操作を実行して、データオブジェクトおよびECCデータのコピーをローカルメモリに返す。上述のように、これらの読み取り操作は、2つの異なるメモリ層から並行して実行されてもよい。
【0056】
ブロック238で、ECCデータは、ビット誤りを検出および/または訂正するために、復元されたデータオブジェクトの関連部分に適用される。この時点で、解読等、他の復号ステップが適用されてもよい。ブロック240で、その後、誤りがないユーザーデータブロックが要求者に返され、メタデータユニットは、関連するデータオブジェクトの読み取り回数の増加を反映するように更新される。観察されたビット誤り率(BER)、増分された読み取り回数、測定されたドリフトパラメトリック等、メモリに関する他のパラメトリックもメモリ層データ構造に記憶されてもよい。必ずしも必要ではないが、新しい更新されたメタデータユニットが以前と同じメモリ層に保持されることが考えられる。
【0057】
書き換え可能なメモリ層の場合、メタデータに対する新しい更新(例えば、増分読み取り回数、状態情報等)は、関連するデータオブジェクトの既存のメタデータ上に上書きされてもよい。消去可能なメモリ層(例えば、フラッシュメモリ216)に記憶されたメタデータの場合、メタデータユニット(またはその一部)は、層内の新しい場所に書き込むことが必要な場合がある。
【0058】
最後に、ブロック244で、読み取り操作に基づいて、データオブジェクト、ECCデータ、および/またはメタデータユニットのうちのいずれか1つ、いくつか、または全ての形式および/またはメモリ層の調整が必要に応じて実行される。例えば、相対的に高い観察ビット誤り率(BER)、記憶されたデータオブジェクトに関連するパラメトリックで検出されたドリフト、読み取り回数、経過時間等の属性に基づいて、ストレージマネージャ170(図
6)は、ECCデータレベルを増加するように進んでもよく、例えば、LDPC値は、その後のデータの読み取り操作中により強化されたECC能力を提供するように、リードソロモン符号によって拡張または置換される場合がある。一実施形態において、ECCの強度は、データオブジェクトの読み戻し中に選択された数の読み取りビット誤りが検出された場合、次の上位のレベルに自動的に増分される。
【0059】
更新されたECCデータは、以前と同じメモリ層内に記憶されてもよく、または新しい層が選択されてもよい。新しい層が選択される場合、関連するメタデータユニットは、ECCデータの新しい場所を反映するように更新される。他の調整も行うことができる。バックグラウンド処理は、データオブジェクト、ECCデータ、およびメタデータの既存のメモリ層および形式の連続持続性を評価するために、各読み取り操作(または既定のしきい値から外れるパラメータを示す各読み取り操作)の終了時に成立させることができることに注意されたい。加えておよび/または代替として、アイドル時間中の定期的な分析は、既存のパラメトリック設定を評価し、このような調整を行うことを必要とすることができる。
【0060】
所与のメタデータユニットは、頻繁な更新を必要とする部分が、頻繁な更新に容易に対応することができる1つの層に記憶され、更新頻度が少ないメタデータが異なる層(消去可能な層および/または耐性が低い層等)に保持することができるように異なる層全体に分散されてもよいことに注意されたい。同様に、ECCデータは、データセットに異なるレベルのECC保護を提供するために、異なる層にわたって分散されてもよい。
【0061】
図13は、いくつかの実施形態に従って実行されてもよい、書き込み操作処理を図示する。ブロック250で、新しいデータをメモリ構造104に書き込む間、書き込みコマンドおよび関連のユーザーデータセットが、要求者から装置100へ提供され、存在する場合、それまでに記憶された最新バージョンのデータを検索するために初期のメタデータ参照動作となる。その場合、メタデータが取得され、ブロック252で、新しく存在したデータが異なるバージョンのデータを表すことを確認するために、予備の書き込み増幅フィルタリング分析が発生してもよい。
【0062】
ブロック254で、データオブジェクトが生成され、データオブジェクトに適切なメモリ層レベルが選択される。上述したように、適切なメモリ層を選択するために多様なデータおよびメモリ関係属性が使用されてもよく、次いで、その層内の次に使用可能なメモリの場所がデータオブジェクトの転送のために割り当てられてもよい。ブロック256および258で、上述した多様な因子に基づいて対応する層に適切なECCデータおよびメタデータユニットを生成するように、同様な操作が実行される。ブロック260で、データオブジェクト、ECCデータ、およびメタデータユニットそれぞれは、その後、異なる層に記憶される。いくつかの事例において、転送は、同じ時間間隔全体中に並行して実行されてもよい。
【0063】
以前のバージョンのデータオブジェクト、ECCデータ、およびメタデータがメモリ構造104に存在する場合、新しいバージョンのこれらのデータセットは、以前のバージョンと同じそれぞれのメモリ層に記憶されても、またはされなくてもよい。これより古いバージョンのデータセットは、無効と印され、古いMDユニットの1つ以上の前向きポインタを新しい場所に追加すること等によって、必要に応じて調整されてもよい。ブロック262で、この操作が示される。
【0064】
メタデータの粒度は、対応するデータオブジェクトの特徴に基づいて選択される。本明細書に使用される場合、粒度とは概して、所与のメタデータユニットによって記述されるユーザーデータのユニットサイズのことであり、メタデータの粒度が小さくなればなるほど、ユニットサイズが小さくなり、またその逆も言える。メタデータの粒度が減少すると、メタデータユニットのサイズが増加する場合がある。これは、1メガバイト(MB)のユーザーデータを単一ユニットとして記述するために必要なメタデータ(粒度大)は、同じ1MBのユーザーデータの各16バイト(または512バイト等)を個別に記述するために必要なメタデータ(粒度小)よりも相当小さいからである。ECCデータは、メタデータの粒度に対応する適切なレベルを有するように選択されてもよい。
【0065】
図14は、前述の記載に従い実行されてもよいガーベッジコレクションプロセスを図示する。メモリ構造104の多様な層(
図6の多様な層178〜188等)の1つ、いくつか、または全ては、ユニットとして割り当てられ、リセットされるガーベッジコレクションユニット(GCU)に配置されてもよい。
【0066】
GCUは特に、選択された場所に新しいデータを記憶する前に別の完全消去操作を必要とする、フラッシュメモリ等の消去可能なメモリに適している。GCUはまた、より大きいメモリ空間を、必要に応じて割り当て、リセットしてから、使用可能な割り当てプールに返すことができる、より小さい、管理可能なセクションに分割するために書き換え可能なメモリにおいて使用することができる。消去可能なメモリおよび書き換え可能なメモリ両方においてGCUを使用することで、メモリ履歴メトリクスおよびパラメータの追跡を向上することを可能にすることができ、向上したレベルのロードを提供することができ、すなわち、GCUは、所与の層内のメモリセルの全てがデータを書き込む際に、ほとんどのI/O作業負荷を受ける1つの特定領域に集中するのではなく、実質的に同じ一般的な量の使用量を受けることを確実にするよう支援することができる。
【0067】
GCU割り当てプールは、
図14において270で示される。これは、新しいデータセットに対応するためにストレージマネージャによって選択可能な使用可能ないくつかのGCU(
図4においてGCU A、GCU B、およびGCU Cと示される)を表す。割り当てられた後、GCUは、多様なデータI/O操作が上述したように実行される間、操作状態272に移行する。選択した期間の後、GCUは、274で示されるように、ガーベッジコレクション処理の対象となってもよい。
【0068】
ガーベッジコレクション処理は概して、
図15の流れによって表される。ステップ280で、1つのGCU(GCU B等)が選択される。選択されたGCUは、データオブジェクト、ECCデータ、メタデータユニット、またはこれらの3つの種類のデータセット全てを記憶してもよい。ストレージマネージャ170(
図6)は、どれが有効なデータを表し、どれが無効なデータを表すかを判定するために、選択されたGCU内のデータセットの各々の状態を確認する。無効なデータは、上述したように、メタデータから、または他のデータ構造から示されてもよい。無効なデータセットは概して、連続して記憶することを必要としないデータセットを表すので、捨てることができる。有効なデータセットは、データセットが最新バージョンのセットを表すために、他のデータ(例えば、他のメタデータユニットをポイントする前向きポインタを有するメタデータユニット等)にアクセスする等のためにデータセットが必要であるので、保存されなければならない。
【0069】
ステップ282で、選択されたGCUからの有効なデータセットは、移動される。ほとんどの場合、有効なデータセットは、メモリ構造104内のより下位のメモリ層の新しい場所にコピーされると考えられる。所与のアプリケーションの要件に応じて、有効なデータセットのうちの少なくともいくつかは、データアクセス要件等に基づいて、同じメモリ層内の異なるGCUに保存されてもよい。示されたデータの全ては、同じ下位層に送信されてもよく、または示されたデータの異なるデータは、異なる下位層に分散されてもよいことを理解されたい。
【0070】
ステップ284で、次に、選択されたGCU内のメモリセルがリセットされる。この操作は、メモリの構築に依存する。例えば、PCRAM層182(
図6)等の書き換え可能なメモリにおいて、GCU内のセルの相変化物質は、より下位の抵抗結晶状態にリセットされてもよい。フラッシュメモリ層186等の消去可能なメモリにおいて、完全消去操作は、蓄積された電荷の実質的に全てをフラッシュメモリセルの浮動ゲートから除去して、セルを消去された状態にリセットするために、フラッシュメモリセルに適用されてもよい。選択されたGCUがリセットされると、ステップ286で、GCUはGCU割り当てプールに返され、システムによるその後の再割当を待つ。
【0071】
前述の記載に基づいて、ECCデータの次に下位のレベルへの移動は、データをさらに下位の層へ移動させ、優先度がさらに高いデータの記憶のために既存の層を空ける際に利点であり得ることが理解され得る。示されたECCデータのECCレベルが評価され、新しいさらに下位のメモリ層に対してさらに適した形式に調整されてもよい。
【0072】
本明細書に使用される場合、「消去可能な」メモリセル等は、前述の記載と一致して、蓄積された電荷を浮動ゲート構造から除去するために消去操作を必要とするフラッシュメモリセルの場合のように、いったん書き込まれると、介在する完全消去操作なく、全ての有効なプログラムされた状態未満まで書き換えることができるメモリセルと理解される。「書き換え可能な」メモリセルという用語は、前述の記載と一致して、任意の初期データ状態(例えば、論理0、1、01等)をとることができ、残りの利用可能な論理状態(例えば、論理1、0、11、00等)のうちのいずれかに書き込むことができる、NV−RAM、RRAM、STRAM、およびPCRAMセル等の場合のように、いったん書き込まれると、介在するリセット操作なく、全ての他の有効なプログラムされた状態に書き換えることができる、メモリセルと理解される。
【0073】
本開示の多様な実施形態の多数の特徴および利点は、構造および機能の詳細とともに前述の説明に記載した。それにもかかわらず、この詳細説明は例示に過ぎず、添付の請求項が表現される条件の広義の趣旨によって示される完全な範囲まで、特に本開示の原則内で構造および部分の配置に関して、詳細の変更が行われてもよい。