(57)【要約】【課題】予想外の電力損失に対してデータを保護することのできるデータ記憶デバイスを提供する。【解決手段】データ記憶デバイスは、書き込みデータコマンドおよびデータを受信する。データは、データ記憶デバイスのバッファに記憶される。データ記憶デバイスは、コマンド完了状態表示を発行する。コマンド完了状態表示が発行された後に、データは、データ記憶デバイスの一次メモリに記憶される。一次メモリは、第１の種類の不揮発性メモリを含み、バッファは、第１の種類の不揮発性メモリと異なる第２の種類の不揮発性メモリを含む。【選択図】図２
2014154166.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶デバイスにおいて、書き込みデータコマンドおよびデータを受信することと、
前記データを前記記憶デバイスのバッファに記憶することと、
前記データを前記バッファに記憶した後に、コマンド完了状態表示を発行することと、
前記コマンド完了状態表示を発行した後に、前記データを前記記憶デバイスの一次メモリに記憶することと、を含み、前記一次メモリは、第１の種類の不揮発性メモリを含み、前記バッファは、前記第１の種類の不揮発性メモリと異なる第２の種類の不揮発性メモリを含む、方法。
【請求項２】
前記第２の種類の不揮発性メモリは、前記第１の種類の不揮発性メモリよりも高速のアクセス時間を有する、請求項１に記載の方法。
【請求項３】
前記データを前記一次メモリに記憶することは、前記データをフラッシュメモリに記憶することを含み、
前記データを前記バッファに記憶することは、前記データをＳＴＲＡＭ、ＰＣＲＡＭ、ＲＲＡＭ、およびＮＶＳＲＡＭのうちの１つ以上に記憶することを含む、請求項１に記載の方法。
【請求項４】
前記データの論理ブロックアドレスと前記一次メモリ内の前記データの物理的な場所との間のマッピング情報を含むマッピングメタデータを、前記バッファに記憶することと、
前記コマンド完了状態表示を発行した後に、前記マッピングメタデータを前記一次メモリに記憶することと、をさらに含む、請求項１に記載の方法。
【請求項５】
閾値量のデータが前記バッファに蓄積されるまで、複数の書き込みデータコマンドからのデータを前記バッファに蓄積することと、
前記閾値量のデータが前記バッファに蓄積された後に、蓄積されたデータを前記一次メモリに記憶することと、をさらに含む、請求項１に記載の方法。
【請求項６】
前記一次メモリは、フラッシュメモリを含み、
前記閾値量の蓄積されたデータは、１論理ページのデータである、請求項５に記載の方法。
【請求項７】
前記一次メモリは、フラッシュメモリを含み、
前記閾値量の蓄積されたデータは、１物理ページのデータである、請求項５に記載の方法。
【請求項８】
前記一次メモリは、マルチレベルフラッシュメモリを含み、前記閾値量の蓄積されたデータは、少なくとも１ページの蓄積されたデータを前記フラッシュメモリに記憶することを可能にするのに十分であり、
前記少なくとも１ページが記憶される前記一次メモリの少なくとも１ブロック内の各物理ページから１つ以上のページを読み取ることと、
他のページを前記バッファに記憶することと、
前記少なくとも１ページが蓄積された後に、前記ページおよび前記他のページを前記一次メモリの前記物理ページに記憶することと、をさらに含む、請求項５に記載の方法。
【請求項９】
前記他のページを読み取ることは、前記ページを蓄積する前に発生する、請求項８に記載の方法。
【請求項１０】
前記他のページを読み取ることは、前記ページを蓄積している間に発生する、請求項８に記載の方法。
【請求項１１】
前記データ記憶デバイス内の論理ブロックの領域が書き込まれた回数を計数することと、
複数の書き込みデータコマンドからのデータを前記バッファに蓄積することと、
前記回数に基づいて、論理ブロックの領域が頻繁に書き込まれていないか、または頻繁に書き込まれているかを判定することと、
論理ブロックの前記頻繁に書き込まれている領域のデータを記憶する前に、論理ブロックの前記頻繁に書き込まれていない領域のデータを一次メモリに記憶することと、をさらに含む、請求項１に記載の方法。
【請求項１２】
書き込み操作の状態を提供するメタデータを更新することをさらに含む、請求項１に記載の方法。
【請求項１３】
前記メタデータを更新することは、前記書き込みデータコマンドが受信された後に、書き込み操作が進行中であることを示すように前記メタデータを更新することを含む、請求項１２に記載の方法。
【請求項１４】
前記メタデータを更新することは、前記データが受信されたことを示すように前記メタデータを更新することを含む、請求項１２に記載の方法。
【請求項１５】
前記メタデータを更新することは、前記データを前記一次メモリに記憶した後に、前記書き込み操作が完了したことを示すように前記メタデータを更新することを含む、請求項１２に記載の方法。
【請求項１６】
書き込みデータコマンドおよびデータを受信するように構成されるインターフェースと、
第１の種類の不揮発性メモリを含む一次メモリと、
前記第１の種類の不揮発性メモリと異なる第２の種類の不揮発性メモリを含むバッファと、
コントローラであって、
前記データを前記バッファに記憶させ、
前記データが前記バッファに記憶された後に、前記書き込みデータコマンドが完了したことを示すコマンド完了状態表示を発行し、
前記コマンド完了状態表示が発行された後に、前記データを前記一次メモリに記憶させるように構成される、コントローラと、
を備える、デバイス。
【請求項１７】
前記第２のメモリの種類は、不揮発性スタティックランダムアクセスメモリ（ＮＶＳＲＡＭ）、相変化メモリ（ＰＣＭ）、抵抗ランダムアクセスメモリ（ＲＲＡＭ）、スピントルクＲＡＭ（ＳＴＲＡＭ）、および磁気ＲＡＭ（ＭＲＡＭ）のうちの１つ以上を含む、請求項１６に記載のデバイス。
【請求項１８】
前記デバイスは、ソリッドステートドライブを含み、前記第１のメモリの種類は、フラッシュメモリを含む、請求項１６に記載のデバイス。
【請求項１９】
前記デバイスは、ハイブリッドドライブを含む、請求項１６に記載のデバイス。
【請求項２０】
前記コントローラは、前記データが前記一次メモリに記憶されるときに、書き込み妨害効果を事前補正するように構成される、請求項１６に記載のデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ記憶デバイスおよびデータ記憶デバイスを操作する方法に関する。
【背景技術】
【０００２】
書き込み操作に関して、ハードディスクドライブ、ソリッドステートドライブ、またはハイブリッドディスクドライブ等のデータ記憶デバイスに送信されるデータの受信および記憶の成功は、典型的に、「コマンド完了」状態メッセージ表示（ＣＣＩ）を介して、例えば、ホスト等の送信デバイスへ確認される。例えば、揮発性書き込みキャッシュが無効の状態のシリアル接続ＳＣＳＩハードディスクドライブは、典型的に、データが媒体に書き込まれた後に、書き込みコマンド操作に関するそのようなメッセージを送信する。データ整合性を維持するには、データ記憶デバイスが供給電力を突然損失した場合に、記憶のために送信されたデータが損失しないことが望ましい。しかしながら、最適なシステムスループットを提供するには、ホストから送信されたデータが、データ記憶デバイス内のその最終的なメモリ場所にまだ記憶されていないとしても、データ記憶デバイスからＣＣＩを返すことが有益であり得る。データがその最終的なメモリ場所に記憶される前にＣＣＩを先行的に送信することは、ホストおよびデータ記憶デバイスの両方の性能に有益であり得る。データ記憶デバイス内での障害の場合、データは、通常、ＣＣＩがデータ記憶デバイスから受信されるまでホストシステム内に保持される。ＣＣＩの受信は、ホストシステムが新しい作業のためにそのデータバッファを解放することを可能にする。データ記憶デバイスの場合、ＣＣＩの先行的な送信は、さらなる新しいコマンドがホストシステムにより送信されることを潜在的に可能にし、例えば、コマンドの境界にわたる連続的な操作等、コマンドの並行処理および補助的コマンドの統合の可能性を増加させる。しかしながら、ＣＣＩはホストに送信された後であるが、データが任意の対応するメタデータとともに不揮発性メモリ保存される前に、電源異常が発生した場合、データ整合性は損なわれ得る。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
データがその最終的な不揮発性メモリ場所に記憶される前にＣＣＩを返す技法は、データスループットを増加させることができるが、そのような技法およびデータ損失の回避は、例えば、バッテリーバックアップおよび／または容量エネルギー貯蔵等のさらなる電気エネルギー貯蔵コンポーネントに繋がる。これらのさらなるエネルギー貯蔵コンポーネントは、データが記憶されている間に主電力損失が発生したとしても、データ記憶操作を完了させることが十分に可能なバックアップ電力をデータ記憶デバイスに対して維持するように設計されている。さらなるハードウェアを組み込むことは、デバイスの複雑性、費用、およびサイズを増大させる。
【０００４】
マッピングメタデータを維持して、データが一次メモリのどこに記憶されるかを追跡する必要性に起因して、さらなる複雑性がもたらされる。概して、ほとんどのデータ記憶デバイスに記憶されるデータは、（ホストによって使用される）その論理アドレスと一次記憶部内の物理的な場所との間で直接マップされない。代わりに、マッピングメタデータは、一次記憶装部内の物理的な場所の論理ブロックの場所を追跡する。予想外の電力損失の場合においてもマッピングメタデータを正確に維持することは、データ記憶デバイスのデータ整合性を向上させる。マッピングメタデータは、頻繁に更新されるため、マッピングメタデータを高速かつ耐久性のあるメモリに記憶することが有用である。ＳＲＡＭまたはＤＲＡＭ等の揮発性メモリは、マッピングメタデータに適合する速度および耐久性特性を有するが、揮発性であり、電力の損失時にそれらのコンテンツが損失する。メタデータをより低速かつ耐久性の低い不揮発性メモリに記憶することは、書き込み増幅を増大させ、不揮発性記憶コンポーネントを消耗させ、かつ性能を低下させる。
【課題を解決するための手段】
【０００５】
第１項  本明細書に記載される方法は、
データ記憶デバイスにおいて、書き込みデータコマンドおよびデータを受信することと、
データを記憶デバイスのバッファに記憶することと、
データをバッファに記憶した後に、コマンド完了状態表示を発行することと、
コマンド完了状態表示を発行した後に、データを記憶デバイスの一次メモリに記憶することと、を含み、一次メモリは、第１の種類の不揮発性メモリを含み、バッファは、第１の種類の不揮発性メモリと異なる第２の種類の不揮発性メモリを含む。
【０００６】
第２項  第２の種類の不揮発性メモリは、第１の種類の不揮発性メモリよりも高速のアクセス時間を有する、第１項に記載の方法。
【０００７】
第３項  
データを一次メモリに記憶することは、データをフラッシュメモリに記憶することを含み、
データをバッファに記憶することは、データをＳＴＲＡＭ、ＰＣＲＡＭ、ＲＲＡＭ（登録商標）、およびＮＶＳＲＡＭのうちの１つ以上に記憶することを含む、第１〜２項のいずれか１項に記載の方法。
【０００８】
第４項  
データの論理ブロックアドレスと一次メモリ内のデータの物理的な場所との間のマッピング情報を含むマッピングメタデータを、バッファに記憶することと、
コマンド完了状態表示を発行した後に、マッピングメタデータを一次メモリに記憶することと、をさらに含む、第１〜３項のいずれか１項に記載の方法。
【０００９】
第５項  
閾値量のデータがバッファに蓄積されるまで、複数の書き込みデータコマンドからのデータをバッファに蓄積することと、
閾値量のデータがバッファに蓄積された後に、蓄積されたデータを一次メモリに記憶することと、をさらに含む、第１〜４項のいずれか１項に記載の方法。
【００１０】
第６項  
一次メモリは、フラッシュメモリを含み、
閾値量の蓄積されたデータは、１論理ページのデータである、第１〜５項のいずれか１項に記載の方法。
【００１１】
第７項  
一次メモリは、フラッシュメモリを含み、
閾値量の蓄積されたデータは、１物理ページのデータである、第５項に記載の方法であり、第１〜５項のいずれか１項に記載の方法。
【００１２】
第８項  一次メモリは、マルチレベルフラッシュメモリを含み、閾値量の蓄積されたデータは、少なくとも１ページの蓄積されたデータをフラッシュメモリに記憶することを可能にするのに十分であり、
少なくとも１ページが記憶される一次メモリの少なくとも１ブロック内の各物理ページから１つ以上のページを読み取ることと、
他のページをバッファに記憶することと、
少なくとも１ページが蓄積された後に、ページおよび他のページを一次メモリの物理ページに記憶することと、をさらに含む、第１〜５項のいずれか１項に記載の方法
第９項  他のページを読み取ることは、ページを蓄積する前に発生する、第８項に記載の方法。
【００１３】
第１０項  他のページを読み取ることは、ページを蓄積している間に発生する、第８項に記載の方法。
【００１４】
第１１項  
データ記憶デバイス内の論理ブロックの領域が書き込まれた回数を計数することと、
複数の書き込みデータコマンドからのデータをバッファに蓄積することと、
回数に基づいて、論理ブロックの領域が頻繁に書き込まれていないか、または頻繁に書き込まれているかを判定することと、
論理ブロックの頻繁に書き込まれている領域のデータを記憶する前に、論理ブロックの頻繁に書き込まれていない領域のデータを一次メモリに記憶することと、をさらに含む、第１〜１０項のいずれか１項に記載の方法。
【００１５】
第１２項  書き込み操作の状態を提供するメタデータを更新することをさらに含む、第１〜１１項のいずれか１項に記載の方法。
【００１６】
第１３項  メタデータを更新することは、書き込みデータコマンドが受信された後に、書き込み操作が進行中であることを示すようにメタデータを更新することを含む、第１２項に記載の方法。
【００１７】
第１４項  メタデータを更新することは、データが受信されたことを示すようにメタデータを更新することを含む、第１２項に記載の方法。
【００１８】
第１５項  メタデータを更新することは、データを一次メモリに記憶した後に、書き込み操作が完了したことを示すようにメタデータを更新することを含む、第１２項に記載の方法。
【００１９】
第１６項  
書き込みデータコマンドおよびデータを受信するように構成されるインターフェースと、
第１の種類の不揮発性メモリを含む一次メモリと、
第１の種類の不揮発性メモリと異なる第２の種類の不揮発性メモリを含むバッファと、
コントローラであって、
データをバッファに記憶させ、
データがバッファに記憶された後に、書き込みデータコマンドが完了したことを示すコマンド完了状態表示を発行し、
コマンド完了状態表示が発行された後に、データを一次メモリに記憶させるように構成される、コントローラと、を備える、デバイス。
【００２０】
第１７項  第２のメモリの種類は、不揮発性スタティックランダムアクセスメモリ（ＮＶＳＲＡＭ）、相変化メモリ（ＰＣＭ）、抵抗ランダムアクセスメモリ（ＲＲＡＭ）、スピントルクＲＡＭ（ＳＴＲＡＭ）、および磁気ＲＡＭ（ＭＲＡＭ）のうちの１つ以上を含む、第１６項に記載のデバイス。
【００２１】
第１８項  デバイスは、ソリッドステートドライブを含み、第１のメモリの種類は、フラッシュメモリを含む、第１６〜１７項のいずれか１項に記載のデバイス。
【００２２】
第１９項  デバイスは、ハイブリッドドライブを含む、第１６〜１８項のいずれか１項に記載のデバイス。
【００２３】
第２０項  コントローラは、データが一次メモリに記憶されるときに、書き込み妨害効果を事前補正するように構成される、第１６〜１９項のいずれか１項に記載のデバイス。
【図面の簡単な説明】
【００２４】
【図１】図１は、本明細書に記載される実施形態によるデータ記憶デバイスを備えるシステムのブロック図である。
【図２】図２は、いくつかの実施形態に従い書き込み操作を行うようにデータ記憶デバイスを操作する工程の流れ図を提供する。
【図３】図３は、データを記憶すること、および書き込み操作中にメタデータを更新することを含む工程を説明する流れ図である。
【図４】図４は、仮説的な２レベルメモリセルにおける２ビットのデータを表すために使用され得る可能な電圧レベルを示す。
【図５】図５は、いくつかの実施形態に従いデータを一次メモリに記憶する前に蓄積する工程を説明する。
【発明を実施するための形態】
【００２５】
本明細書に記載される実施形態は、一次不揮発性メモリよりも高速のアクセス時間および／または高い耐久性を持つ二次不揮発性メモリを組み込む。これらの実施形態において、二次不揮発性メモリは、一次不揮発性メモリのバッファとしての役割を果たし、一次不揮発性メモリは、概して、ユーザデータの最終的な記憶場所として機能する。本明細書に記載される実施形態において、ＣＣＩは、データが二次不揮発性メモリに保存された後であるが、データが一次メモリに記憶される前に、データ記憶デバイスからホストに送信される。用語「一次メモリ」および「二次メモリ」は、本明細書において、メモリにおける差（例えば、使用率、容量、性能、メモリクラス、または種類等）を示すために使用され、かつ必ずしも順序または優先順位を示すために使用されるわけではないことに留意されたい。
【００２６】
いくつかの記憶デバイス構成において、一次メモリは、ＮＡＮＤまたはＮＯＲフラッシュメモリ等のソリッドステートメモリである。フラッシュメモリは、概して、浮遊ゲートＦＥＴ技術に基づいた電気的に消去可能かつプログラム可能なメモリを指す。フラッシュメモリは、ますます重要な記憶技術になっており、ソリッドステートドライブ（ＳＳＤ）における一次記憶メモリとして使用されている。フラッシュメモリはまた、ハイブリッドドライブにおいてハードディスク（回転ディスク）メモリと組み合わせても使用される。一次メモリがフラッシュまたはハードディスクであるいくつかの配置において、二次メモリは、相変化メモリ（ＰＣＭ）、抵抗ランダムアクセスメモリ（ＲＲＡＭ）、スピントルクランダムアクセスメモリ（ＳＴＲＡＭ）および／または不揮発性スタティックランダムアクセスメモリ（ＮＶＳＲＡＭ）等の、フラッシュメモリよりも高速および／または耐久性のある不揮発性メモリであり得る。ＰＣＭおよびＲＲＡＭは、（再プログラミングサイクルの点から）ＮＡＮＤフラッシュよりも何千倍も耐久性があり得、またビットが変更可能でもある。ＳＴＲＡＭおよびｎｖＲＡＭデバイスは、ほぼ無制限の耐久性を有し、またビットが変更可能でもある。
【００２７】
図１は、データ記憶デバイス１０１およびホスト１４０を示すシステムのブロック図である。データ記憶デバイス１０１は、例えば、フラッシュ、ハードディスク、または他の不揮発性メモリ等の不揮発性一次メモリ１１０と、および、例えば、ＳＴＲＡＭ、ＰＣＲＡＭ、ＲＲＡＭ、ＮＶＳＲＡＭ、または他の種類の不揮発性メモリ等の不揮発性二次メモリ１２０を備える。一次メモリ１１０は、典型的に、多数のデータ記憶場所１１１を備え、二次メモリ１２０は、典型的に、より小数のデータ記憶場所１２１を備える。多くの配置において、二次メモリ１２０は、一次メモリよりも高速のアクセス時間を有し、および／または一次メモリよりも耐久性がある。一次メモリは、ハイブリッドドライブでともに使用されるフラッシュおよびハードディスクメモリ等の複数の種類のメモリを含み得ることに留意されたい。同様に、二次メモリ１２０もまた、複数のメモリの種類を使用し得る。
【００２８】
データ記憶デバイス１０１は、多数のデータ記憶場所を備える一次メモリ１１０および二次メモリ１２０を、ホスト１４０に結合するコントローラ１３０を備える。コントローラ１３０は、一次１１０および二次１２０メモリへの読み取りおよび書き込みアクセスを制御する。例えば、ホスト１４０は、データ記憶デバイス１０１への書き込みコマンドを発行してもよく、書き込みコマンドは、記憶されるデータおよびデータの論理ブロックアドレス（ＬＢＡ）を含む。コントローラ１３０は、ホスト１４０から送信されたデータが、一次メモリ１１０内の最終的な行先のメモリ場所１１１に記憶されるように、データ記憶コマンドをホストから受信し、かつ二次メモリ１２０および一次メモリ１１０を制御する。本明細書で使用される場合、用語データの「最終的な行先」は、一次メモリに記憶されたデータが、必ずしもこの最終的な行先に恒久的に存在しないとしても、かつガーベジコレクションおよび／または他のデバイス操作の結果として、データ記憶コマンドの実行後に一次メモリ内の他のメモリ場所または他の場所に移動し得るとしても、実行されるデータ記憶コマンドとの関連におけるデータの最終的な行先を指す。実行されるデータ記憶操作の一部として、コントローラ１３０は、データのホストＬＢＡを一次メモリ１１０および／または二次メモリ１２０内のデータの物理的な場所にマップするマッピングメタデータを生成する。さらに、コントローラ１３０は、ホスト１４０に返される種々のハンドシェイク信号を生成し、図１に示されるようなＣＣＩ信号等のデータ記憶コマンドの状態を示す。
【００２９】
図２は、本明細書に記載される種々の実施形態によるデータ記憶デバイスを操作する工程の流れ図を示す。上述のように、データ記憶デバイスは、主にバッファとして使用される一次メモリおよび二次メモリを備える。一次メモリは、第１の種類の不揮発性メモリを含み、バッファは、第２の種類の不揮発性メモリを含み、第２の種類の不揮発性メモリは、第１の種類の不揮発性メモリよりも高速のアクセス速度および／または高い耐久性を有する。データ記憶デバイスは、データをデータ記憶デバイスに記憶することを要求するホストから書き込みコマンドを受信する（２１０）。データは、最初にバッファに記憶される（２２０）。データがバッファに記憶された後に、コントローラは、ホストにＣＣＩコマンドを送信し（２３０）、ＣＣＩコマンドは、書き込みコマンドのデータが記憶されたことをホストに示す。ＣＣＩコマンドがホストに送信された後に、データは、一次メモリに記憶される（２４０）。
【００３０】
いくつかの配置において、データ記憶デバイスは、選択的にデータをバッファに記憶してもよい。例えば、いくつの場合において、書き込みコマンドは、書き込みデータコマンドのデータに対する優先度レベルを含み得、および／またはコントローラは、優先度レベルを判定し得る。データの優先度レベルが所定の閾値優先度を下回る場合、コントローラは、バッファを迂回し得、かつデータを一次メモリに直接記憶し得る。データの優先度レベルが閾値優先度以上の場合、データは、一次メモリに記憶される前に、最初にバッファに記憶される。いくつの場合において、一部のデータをバッファに無期限に保持することが所望され得る。例えば、頻繁に読み取られるＬＢＡのデータ等の、システムの性能にとってより重要であると見なされるデータは、バッファに保持され得る。別の例として、消耗を低減させるため、または性能を向上させるため、頻繁に書き換えられるＬＢＡのデータは、めったに書き換えられないＬＢＡからのデータより優先してバッファに保持され得る。さらに別の例として、（重複して）他の場所に記憶されるデータは、他の場所に記憶されないデータよりも低いバッファ保持優先度を有し得る。いくつの場合において、ユーザデータは、より重要であると判定され得、したがって、デバイスのデータ整合性にとって必須ではない内部ドライブログおよびジャーナル等の他のデータよりも高い優先度を有し得る。
【００３１】
いくつかの実施形態において、コントローラは、データ記憶デバイス内の論理ブロックの領域が書き込まれた回数を計数する。複数の書き込みデータコマンドからのデータが、バッファに蓄積される。コントローラは、計数された回数に基づいて、論理ブロックの領域が頻繁に書き込まれていないか、または頻繁に書き込まれているかを判定する。コントローラは、頻繁に書き込まれているＬＢＡ領域のバッファされたデータを記憶させる前に、頻繁に書き込まれていないＬＢＡ領域のバッファされたデータを記憶させる。
【００３２】
図２に説明される書き込み操作の間、コントローラは、書き込み操作の進捗を記録するメタデータを更新することができる。書き込み操作メタデータは、コントローラの不揮発性レジスタ（使用可能な場合）等のバッファまたは他の不揮発性メモリに記憶することができる。例えば、書き込み操作メタデータは、書き込み操作が進行中であること、書き込み操作が完了したこと、記憶されるデータのＬＢＡおよび／または長さ、蓄積されたデータを一次メモリに記憶する前のデータの蓄積等の情報を示すように更新することができる。
【００３３】
ほとんどのソリッドステートドライブ設計において、ホストによって使用される論理ブロックアドレス（ＬＢＡ）は、一次メモリ内の物理的な場所に直接マップされない。コントローラは、ホストＬＢＡの物理的なメモリ場所を追跡するためにマッピングメタデータを使用する。ホストシステムの予想外の電力損失の場合においてもマッピングメタデータを正確に維持することは、データ記憶デバイスのデータ整合性を確実にするのに役立つ。停電時にマッピングメタデータを損失する可能性を低減させるために、マッピングメタデータが一次メモリに転送されるまで、マッピングメタデータを、例えば、コントローラの不揮発性バッファまたは他の不揮発性レジスタ（使用可能な場合）等の不揮発性メモリに記憶することができる。
【００３４】
書き込み操作はコントローラによって実行されるため、書き込み操作メタデータおよびマッピングメタデータは、通常、頻繁に更新される。いくつかの構成において、不揮発性バッファは、書き込み操作メタデータおよび／またはマッピングメタデータを記憶するために使用される。不揮発性バッファの使用は、停電時にメタデータを損失から保護する。バッファが、一次メモリよりも高速のアクセス時間を有する場合、メタデータへの頻繁な更新を、バッファを用いて最も迅速に行うことができる。バッファが、一次メモリよりも頑強な耐久性を有する場合、メタデータへの頻繁な更新は、一次メモリの消耗を低減させる。原子的な更新が、書き込み操作の可能な限り最小の増分でメタデータを更新することに相当する場合、メタデータへの更新を原子的に行うことが有用であり得る。メタデータを原子的に増分することができない場合、メタデータは、所定の確率に満たないデータ損失のリスクを維持する、書き込み操作の最小の増分で更新され得る。代替的に、またはさらに、メタデータを原子的に更新することができない場合、基本的に、「更新が進行中-代替コピーを使用」と示すセマフォを維持して、メタデータ更新が進行中に、電力損失からの破損を追跡し、かつ破損から保護することができる。
【００３５】
図３は、データを記憶すること、および書き込み操作中にメタデータを更新することを含む工程を説明する流れ図を提供する。図３に示される工程によると、コントローラは、ホストから書き込みコマンドを受信し（３０５）、書き込み操作を開始する。書き込み操作メタデータは、随意で、書き込み操作が進行中であることを示すように更新される（３１０）。いくつの場合において、書き込み操作メタデータは、書き込み操作の現在の状態等の書き込み操作に関するさらなる情報を含み得る。データは、ホストから転送され（３１５）、データは、バッファに記憶される（３２０）。データがバッファに記憶された後に、書き込み操作メタデータは、データ記憶デバイスがデータを受信したこと（かつホストにＣＣＩ状態を返そうとしていること）を示すように更新される（３２５）。コントローラは、書き込み操作のＣＣＩを生成し、ホストに送信する（３３０）。データが不揮発性バッファに安全に記憶された状態で、コントローラは、バッファから一次メモリへのデータの転送（３３５）を開始し得る。この転送（３３５）は、コントローラロジックの裁量で行われる。ロジックは、例えば、データを他の受信データと合体させるために、後になるまで記憶を延期することを選択し得る。コントローラは、マッピングメタデータを一次メモリに記憶し得る（３４０）。コントローラは、書き込み操作が完了したことを示すように書き込み操作メタデータを更新する（３４５）。マッピングメタデータが一次メモリに書き込まれた場合、メモリ書き込み操作のためにマッピングメタデータを一時的に記憶するために使用されるバッファ場所は、必要とされなくなり、かつ使用可能なバッファメモリ場所に追加される。書き込み操作が完了したことを示す書き込み操作進行中フラグが削除されたとき、書き込み操作のために使用または確保されていたバッファ場所は、使用可能なバッファ場所のプールに返される。
【００３６】
マルチレベルメモリにおいて、１ビットを超えるビットのデータを単一セルに記憶することができる。ＮＡＮＤフラッシュデバイスにおいて一般的に行われていることのような記憶セルをページにグループ化するデバイスの場合、複数の論理データページを、メモリの単一の物理ページに記憶することができる。メモリの単一の物理ページに記憶されるこれらの複数の論理データページを、本明細書において、コンパニオンページと称する。４レベルメモリを例に用いると、各４レベルメモリセルは、２ビットの情報を記憶することができる。これらのセルをページに配置するデバイスにおいて、フラッシュメモリセルの各物理ページは、２つの論理（コンパニオン）ページを記憶することができる。１つの構成において、第１の論理ページ（下部ページとして表される）は、メモリセルの物理ページのメモリセルの最上位ビット（ＭＳＢ）に記憶することができ、第２の論理ページ（上部ページと表される）は、メモリセルの物理ページの最上位ビット（ＭＳＢ）に記憶することができる。いくつかの方法でマルチレベルデータをメモリセルの物理ページに書き込むことが可能である。１つのシナリオにおいて、下部ページは、ＭＳＢを物理メモリセルに記憶することによって、最初に記憶される。下部ページが書き込まれた後に、上部ページは、物理メモリセルの状態をさらに変更することによって、後で物理メモリセルに記憶される。
【００３７】
図４に説明される仮説的な２レベルメモリセル内の２ビットのデータを表すために使用され得る可能な電圧レベルを検討する。この例において、電圧レベルＶ１は、２ビットのデータ１１（バイナリ）に相当し、電圧Ｖ２は、２ビットのデータ１０に相当し、電圧Ｖ３は、０１に相当し、電圧Ｖ４は、００に相当する。データＹＸは、第１のステップでＹ（ＭＳＢ）を書き込み、続いて、第２にステップでＸ（ＬＳＢ）を書き込む２つのステップの工程においてメモリセルに書き込むことができる。Ｙを書き込む第１のステップの後、メモリセルの電圧レベルは、Ｖ１（Ｙ＝１の場合）またはＶ３（Ｙ＝０の場合）となる。第２のステップで、メモリセルの電圧レベルはＶ１（ＹＸ＝１１の場合）にとどまるか、もしくは電圧レベルはＶ２（ＹＸ＝１０の場合）となるか、または電圧レベルはＶ３（ＹＸ＝０１の場合）にとどまるか、あるいは電圧レベルはＶ４（ＹＸ＝００の場合）となる。
【００３８】
いくつかのシナリオにおいて、単一のステップ工程において、データをマルチレベルメモリセルに書き込むことができる。例えば、図４のメモリセルを検討すると、単一のステップ工程において、メモリセルの電圧は、ＹＸ＝１１の場合、レベルＶ１となり（またはレベルＶ１のままであり）、メモリセルの電圧レベルは、ＹＸ＝１０の場合、レベルＶ２となり、メモリセルの電圧レベルは、ＹＸ＝０１の場合、レベルＶ３となり、メモリセルの電圧レベルは、ＹＸが００の場合、レベルＶ４となる。
【００３９】
前述の例におけるデータを記録するための「電圧レベル」の使用は、例示目的のためである。他の例において、データは、磁性状態、電荷レベル、抵抗レベル等として記憶および理解され得、技法も適用可能である。
【００４０】
上記に概説された２つのステップ工程において、データが物理メモリページのコンパニオン下部および上部ページに書き込まれた場合、一次メモリの下部ページに記憶されたデータは、対応する上部ページが一次メモリに記憶されている間に電力損失が発生した場合、破損し得る。この種類のデータ破損の可能性を低減させるため、書き込みデータコマンドからのデータが一次メモリの上部ページに記憶される場合、対応する下部ページは、一次メモリからバッファに読み取られて、上部ページプログラミング時の電力損失に起因して下部ページのコンテンツが破損しないように保護する。下部ページが一次メモリから読み取られる場合、エラー訂正は下部ページで行われ得る。
【００４１】
いくつかのシナリオにおいて、一次メモリへの書き込み操作が発生する前に、ある量のデータがバッファに蓄積されるとより効率的であり得る。例えば、いくつかの種類のメモリは、所定のユニットに書き込まれ、例えば、フラッシュメモリは、概して、ページに書き込まれる。図５の工程によると、データ記憶デバイスは、ホストから書き込みコマンドを受信し（５２０）、書き込みコマンドからのデータをバッファに蓄積する（５３０）。閾値量のデータが蓄積されるまで、データ蓄積は継続する（５４０）。閾値量は、一次メモリに対する書き込み操作のメモリユニットに相当し得る。一次メモリがマルチレベルメモリである場合、全ての論理ページ（下部、上部、および任意の中間ページ）が、一次メモリ書き込みユニットの各物理ページに記憶されるまで、データは、書き込みコマンドから蓄積され得る。
【００４２】
いくつかのシナリオにおいて、書き込みコマンドからのデータがバッファに蓄積される前、蓄積されている間、および／または蓄積された後に、コントローラは、随意で、この蓄積されたデータのコンパニオンページを一次メモリからバッファに読み取り得る。この随意の工程は、破線の囲み（５１０）によって示される。本明細書に提供される流れ図のブロックの配置は、ブロック内に記載された工程を実行する任意の特定の順序を示唆するよう意図されないことに留意されたい。例えば、読み取り操作は、書き込みデータの受信（５２０）の前に示されているが、同時に、または書き込みデータの受信（５２０）の後に発生しても同様に有効であり得る。書き込みコマンドからのデータの蓄積を通じて、かつ随意で、一次メモリからコンパニオンページを読み取ることによって、所望の量のデータが取得されたときに、蓄積されたデータページおよびそれらのコンパニオンページは、一次メモリに書き込まれる（５５０）。
【００４３】
いくつかの実施形態において、マルチレベル一次メモリが使用される場合、下部ページ、上部ページ、および任意の数の中間ページを一次メモリの各物理ページに別々に書き込む書き込み工程において、論理データページは、一次メモリの物理ページに書き込まれ得る。代替的に、各電圧レベルを、メモリセルに記憶されるマルチビットデータに相当する電圧レベルに直接移行することによって、下部、上部、および中間ページを、単一のステップ工程において一次メモリページの物理ページに書き込むことができる。
【００４４】
フラッシュ等のいくつかの種類の非メモリは、書き込み操作中に妨害効果を受ける。例えば、メモリセルに記憶されたデータは、近くのメモリセルに書き込まれたときに変更され得る。これらの種類のメモリが一次メモリとして使用される場合、データページは、これらの書き込み妨害効果を低減させる工程に従い一次メモリに書き込まれ得る。
【００４５】
上述のように、２つのステップの工程において、下部データページが最初に物理ページに書き込まれ得る。下部ページが書き込まれている間、その物理的に隣接する近隣ページのうちの１つはプログラムされない。その後、コンパニオン上部ページがプログラムされる。上部ページがプログラムされるとき、物理的に隣接する近隣ページは、プログラムされないか、またはセルあたり１ビットのみにプログラムされる（その下部ページのみがプログラムされる）。近隣ページがプログラムされないか、または部分的にのみプログラムされる場合、プログラムされているページは、近隣ページの電荷レベルの結合効果を補正されない。近隣ページが最終的に完全にプログラムされる場合、以前にプログラムされたページのレベルはシフトし得る。例えば、ＮＡＮＤフラッシュにおいて、記憶セル浮遊ゲートの近接近は、記憶セルのレベルをそれらの理想的なレベルからシフトさせる、近隣セルのゲート間の容量結合を引き起こす。
【００４６】
いくつかの実施形態において、本明細書に記載される不揮発性バッファは、複数のページのデータを蓄積することができ、複数の隣接するページは、同時に、または書き込み妨害効果を低減させる協調された方法で、プログラムされ得る。この工程によると、ページを完全にプログラミングする前または間のいずれかに、その近隣ページもまたプログラムされるが、「ソフトに」のみプログラムされる。この文脈において、「ソフトに」プログラムすることは、近隣ページが、その近隣によって必要とされる起こり得るレベル補正を可能にするために、その目標値に近づくが、その最終的な電荷レベルを十分に下回る電荷レベルに「完全にはプログラムされていない」ことを意味する。近隣を「ソフトに」プログラムすることの目的は、その結合効果がプログラミング中にほぼ補正されるように、近隣ページに最終的な電荷レベルを十分に与えることである。近隣するページのこの協調されたプログラミングは、書き込み操作が、潜在的な書き込み妨害を事前補正することを可能にする。本明細書に記載されるバッファは、コントローラが、プログラムされるデータを「待望」することを可能にする十分な量のデータを記憶することによって、事前補正された書き込み操作を促進するために使用することができる。コントローラは、その後、書き込み妨害を引き起こす結合が著しく事前補正されるように、近隣するページを最終的な電荷レベルに十分に近づける「ソフト」プログラミングの適切なレベルを判定することができる。
【００４７】
例えば、４つの物理的に隣接するページＡ、Ｂ、Ｃ、およびＤ（ＡおよびＤは、１つの近隣ページのみを有する端ページである）を有する仮説的なＮＡＮＤフラッシュを検討する。事前補正された書き込み操作は、以下のように機能する。
１．ページＡおよびＢに対してプログラムされるデータを収集する。
２．ページＢをソフトにプログラムする。
３．ページＡをその最終的なレベルにプログラムする。
４．ページＣに対してデータを収集する。
５．ページＣをソフトにプログラムする。
６．ページＢをその最終的なレベルにプログラムする。
７．ページＤに対してデータを収集する。
８．ページＤをソフトにプログラムする。
９．ページＣをその最終的なレベルにプログラムする。
１０．ページＤをその最終的なレベルにプログラムする。
【００４８】
上記の工程１〜１０は、下部ページに対して１回、上部論理ページに対して１回の２回繰り返され得るか、または上部ページのみに適用され得る。
【００４９】
代替的な工程において、通常の操作の前のある時点で、隣接するビットセルの結合が特徴付けられる。この特徴付けは、書き込み妨害効果の事前補正に使用することができる結合補正係数を判定するために使用される。結合の変動性に応じて、記憶される結合係数の量は、エラー率の所望される向上に対してトレードオフされ得る。
【００５０】
いくつかの設計において、結合係数を判定し、かつプログラムされているセルから複数ページ離れたビットセル（ビットセルの両側のページのセル）および複数ビット位置離れたビットセル（同一ページの前後のワード線のセル）をプログラムするときに、書き込み妨害効果を補正するために使用することができる。ページ数に応じて結合係数を判定して、例えば、ダイ位置効果を軽減することができる。
【００５１】
一部の実施において、通常のデバイス操作中に、書き込み工程は以下のように操作される。
１．記憶セルおよび任意の著しく結合された近くのセルの両方に対して記憶されるデータを収集する。
２．完全に収集されるまで、このデータを、バッファ内の最終的な行先に記憶する前に、蓄積および保持する。
３．ページをプログラムしている間、結合係数およびデータを用いて近隣セルの効果を軽減するように各記憶セルのレベルを補正する。
４．全てのデータが記憶されるまで繰り返す。
【００５２】
以下の仮説的な例は、いくつかの実施形態による事前補正された書き込み操作を説明する。
【００５３】
２ビット／セル（４つの電荷レベル）を記憶する仮説的なＮＡＮＤフラッシュ一次記憶部を想定する。製造時、隣接するページは、セルレベル差あたり２％のシフトを引き起こすと判定されるものと想定する。正規化されたセル電荷レベルは、記憶されたデータビットの１１、１０、０１、および００に応じて、０．９５、０．６、０．３、および０．０５ボルトとなる。
【００５４】
セル１は、（０．３の公称レベルとともに）０１にプログラムされると想定する。隣接するビットセルを考慮しないと、セルは、０．３の電荷レベルにプログラムされる。
【００５５】
隣接するまだプログラムされていないページが、データ００を記憶する隣接するセル（セル２）を含有すると想定する。セル１を０．３のレベルにプログラムする代わりに、以下の補正計算が行われる。
【００５６】
００隣接するページセル（セル２）の補正＝＋（０．３＊０．０２）＝０．００６
０．００６（補正値）＋０．３（公称値）＝０．３０６（新しい目標値）
したがって、セル１は、（０．３ではなく）０．３０６の電荷レベルにプログラムされて、隣接するセル（セル２）の将来的なプログラミングレベルを事前補正する。
【００５７】
この実施において、補正は、１０および０１値を含有するセルでのみ行われる可能性がある。１１または００を有するセルは、最良の信号対雑音比（ＳＮＲ）が得られるように常に０．９５／０．０５値にとどまる。
【００５８】
既にプログラムされたセルの効果もまた補正されることに留意されたい。これらのセルは既に、それらは既にプログラムされているため、それらの結合効果は、セルがプログラムされている間に、本質的に検知され、補正される（事後補正）。上記に概説された工程は、事前補正（例えば、プログラミング電圧レベルを調整して、まだプログラムされていないセルによって潜在的に引き起こされる書き込み妨害効果を補正すること）および事後補正（プログラミング電圧レベルを調整して、以前にプログラムされたセルによって潜在的に引き起こされる書き込み妨害効果を補正すること）の両方を提供する。
【００５９】
この発明を実施するための形態は、例示にすぎず、特に、部品の構造および配置および／または工程に関しては、これらの実施形態に種々の追加および／または修正がなされ得ることが理解されるべきである。したがって、本開示の範囲は、上述された特定の実施形態によって限定されるべきではなく、以下の特許請求の範囲およびその等価物によって定義されるべきである。
【符号の説明】
【００６０】
１０１  データ記憶デバイス、１１０  一次メモリ、１１１，１２１  データ記憶場所、１２０  二次メモリ、１３０  コントローラ、１４０  ホスト。
【図１】
2014154166.tif 000003
【図２】
2014154166.tif 000004
【図３】
2014154166.tif 000005
【図４】
2014154166.tif 000006
【図５】
2014154166.tif 000007