(57)【要約】      （修正有）【課題】書き込み時の欠落の緩和のための方法、装置およびシステムを提供する。【解決手段】書き込み時の欠落軽減回路は、電力損失時または電力損失時前後にメモリ１２０への書き込み動作を進行するかを決定する。電力損失時または電力損失時前後に進行中であるメモリ１２０への書き込み動作に応答して、書き込み時の欠落軽減回路は、書き込み時の欠落データおよびメタデータを不揮発性キャッシュ１４０に格納させる。書き込み時の欠落データは、電力損失の結果として、劣化した状態または訂正不可能な状態のまま残されたデータを含む。メタデータには、書き込み時の欠落データが記述される。【選択図】図１
2015035247.tif 000002
【特許請求の範囲】
【請求項１】
メモリへの電力損失を検出することと、
前記電力損失時または前記電力損失時前後に進行中である前記メモリへの書き込み動作に応答して、
書き込み時の欠落（ｔｏｒｎ  ｗｒｉｔｅ）データを不揮発性キャッシュに格納することであって、前記書き込み時の欠落データは、前記電力損失の結果として劣化した状態または訂正不可能な状態のまま残されたデータを含む、格納することと、
前記書き込み時の欠落データを記述するメタデータを前記不揮発性キャッシュに格納することと、を含む、方法。
【請求項２】
前記書き込み時の欠落データを格納することは、前記書き込み時の欠落データを前記不揮発性キャッシュに格納しながらバックアップ電力を提供することを含む、請求項１に記載の方法。
【請求項３】
前記書き込み時の欠落データは、前記メモリに書き込まれる予定であったが、前記電力損失の前に前記メモリに書き込まれなかったデータの１つ以上のセクタをさらに含む、請求項１に記載の方法。
【請求項４】
前記メモリは、回転磁気ディスク、磁気テープ、ＮＯＲフラッシュ、不揮発性スタティックランダムアクセスメモリ（ＮＶＳＲＡＭ）、ＮＡＮＤフラッシュ、磁気抵抗ランダムアクセスメモリ（ＭＲＡＭ）、相変化メモリ（ＰＣＭ）、スピントルクランダムアクセスメモリ（ＳＴＲＡＭ）、抵抗ランダムアクセスメモリ（ＲＲＡＭ（登録商標））、およびバッテリバックアップＲＡＭのうちの１つ以上を備え、
前記不揮発性キャッシュは、ＮＯＲフラッシュ、ＮＶＳＲＡＭ、ＮＡＮＤフラッシュ、ＭＲＡＭ、ＰＣＭ、ＳＴＲＡＭ、ＲＲＡＭ（登録商標）、およびバッテリバックアップＲＡＭのうちの１つ以上を備える、請求項１に記載の方法。
【請求項５】
前記書き込み時の欠落データを前記不揮発性キャッシュから読み出すことと、電力が復旧した後に前記書き込み時の欠落データを前記メモリに書き込むこととをさらに含む、請求項１に記載の方法。
【請求項６】
電力が復旧した後に、
前記メタデータを前記不揮発性キャッシュから読み出すことと、
前記メタデータを用いて前記書き込み時の欠落データを復旧させる前記メモリの場所を特定することと、
前記書き込み時の欠落データを前記メモリの前記場所に再書き込みすることと、をさらに含む、請求項１に記載の方法。
【請求項７】
前記書き込み時の欠落データを格納することは、前記メモリに書き込まれたが、セクタが回復可能であることを示すフィードバック信号が生成されなかった前記セクタを特定することを含む、請求項１に記載の方法。
【請求項８】
前記フィードバック信号は、前記メモリのドライブヘッドが１シリンダ当たりのトラック数の制限内であることを確認するサーボサンプル処理に基づく、請求項７に記載の方法。
【請求項９】
前記書き込み時の欠落データを前記不揮発性キャッシュに格納することは、
前記書き込み時の欠落データが冗長的に格納されているかを決定することと、
冗長的に格納されていない前記書き込み時の欠落データに応答して、前記書き込み時の欠落データを前記不揮発性キャッシュに格納することと、
冗長的に格納されている前記書き込み時の欠落データに応答して、前記書き込み時の欠落データを前記不揮発性キャッシュに格納しないことと、を含む、請求項１に記載の方法。
【請求項１０】
前記メタデータを格納することは、前記メモリのスキップされたセクタについての情報を格納することを含み、
電力が復旧した後に、前記スキップされたセクタについての前記情報を用いて前記不揮発性キャッシュからの前記書き込み時の欠落データを前記メモリに復旧させることをさらに含む、請求項１に記載の方法。
【請求項１１】
前記メモリは磁気ディスクを備え、前記書き込みコマンドの実行中の前記磁気ディスクの位置を追跡することをさらに含む、請求項１に記載の方法。
【請求項１２】
前記位置を追跡することは、
前記電力損失中に前記書き込み動作が停止する停止位置を特定することを含み、
前記停止位置を用いて前記不揮発性キャッシュに格納する前記書き込み時の欠落データの量を計算することをさらに含む、請求項１１に記載の方法。
【請求項１３】
前記電力損失時に修復活動が有効であるかを決定することと、
前記修復活動が有効である場合、前記修復活動と関連付けられたデータを前記不揮発性キャッシュに格納することと、をさらに含む、請求項１に記載の方法。
【請求項１４】
書き込み時の欠落軽減回路を備え、
前記メモリへの書き込み動作が電力損失時に進行中であるかを決定し、かつ
前記電力損失時に進行中である前記書き込み動作に応答して、書き込み時の欠落データおよびメタデータを不揮発性キャッシュに格納させるように構成される、装置であって、前記書き込み時の欠落データは、前記電力損失の結果として、劣化した状態または訂正不可能な状態のまま残されたデータを含み、前記メタデータは、前記書き込み時の欠落データを記述する、装置。
【請求項１５】
前記メタデータは、前記書き込み時の欠落データのヘッダに格納され、前記メタデータのフィールドは、前記不揮発性キャッシュに格納された前記書き込み時の欠落データの量を示す、請求項１４に記載の装置。
【請求項１６】
前記書き込み時の欠落軽減回路は、前記書き込み時の欠落データおよびメタデータが前記不揮発性キャッシュに格納される前に、エラー検出またはエラー訂正符号を用いて、前記書き込み時の欠落データおよび前記メタデータのうちの少なくとも１つを符号化するようにさらに構成される、請求項１４に記載の装置。
【請求項１７】
システムであって、
メモリと、
不揮発性キャッシュと、
ホストから供給される電力の前記損失を検出するように構成される電力損失検出回路と、
書き込み時の欠落軽減回路と、を備え、前記書き込み時の欠落軽減回路は、
前記メモリへの書き込み動作が前記電力損失時または前記電力損失時前後に進行中であるかを決定し、かつ、
前記電力損失時に進行中である前記書き込み動作に応答して、書き込み時の欠落データおよびメタデータを前記不揮発性キャッシュに格納させるように構成され、前記書き込み時の欠落データは、前記電力損失の結果として、劣化した状態または訂正不可能な状態のまま残されたデータを含み、前記メタデータは、前記書き込み時の欠落データを記述する、システム。
【請求項１８】
前記不揮発性キャッシュは、前記書き込み時の欠落データを外部から供給された電力を用いることなく長時間保持することができ、前記書き込み時の欠落データの前記不揮発性キャッシュへの格納が前記電力損失後に利用可能な時間内に完了するような速度で確実に書き込まれ得る、請求項１７に記載の装置。
【請求項１９】
前記システムは、ソリッドステートドライブ記憶デバイスであり、
前記メモリは、マルチレベルセル（ＭＬＣ）ＮＡＮＤフラッシュを備え、
不揮発性キャッシュは、シングルレベルセルモードで動作する前記ＭＬＣ  ＮＡＮＤフラッシュの一部分を備える、請求項１７に記載の装置。
【請求項２０】
前記システムはハードディスクドライブであり、
前記メモリは回転磁気ディスクであり、
前記不揮発性キャッシュは電子フラッシュメモリである、請求項１７に記載の装置。  
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、書き込み時の欠落の緩和のための方法、装置およびシステムに関する。
【発明の概要】
【課題を解決するための手段】
【０００２】
概要
本開示のいくつかの実施形態は、データ記憶デバイスにおける「書き込み時の欠落（ｔｏｒｎ  ｗｒｉｔｅ）」または「書き込みスプライス（ｗｒｉｔｅ−ｓｐｌｉｃｅ）」軽減のためのデバイスおよびシステムに関する。いくつかの方法は、メモリへの電力損失を検出することを含む。電力損失時または電力損失時前後に進行中であるメモリへの書き込み動作に応答して、書き込み時の欠落データを不揮発性キャッシュに格納する。書き込み時の欠落データは、前記電力損失の結果として、劣化した状態または訂正不可能な状態のまま残されたデータを含む。加えて、メタデータは、書き込み時の欠落データを記述する不揮発性キャッシュに格納される。
【０００３】
いくつかの実施形態は、書き込み時の欠落軽減回路を含む装置を含む。書き込み時の欠落軽減回路は、メモリへの書き込み動作がメモリへの電力損失時または電力損失時の前後に進行中であるかを決定するように構成される。電力損失時または電力損失時前後に進行中である書き込み動作に応答して、書き込み時の欠落軽減回路は、書き込み時の欠落データおよびメタデータが不揮発性キャッシュに格納されるようにする。書き込み時の欠落データは、前記電力損失の結果として、劣化した状態または訂正不可能な状態のまま残されたデータを含む。メタデータは、書き込み時の欠落データを記述する。
【０００４】
いくつかの実施形態は、メモリおよび不揮発性キャッシュを含む、データ記憶システムを対象とする。本システムは、メモリへの電力損失を検出するように構成される電力損失検出回路を含む。本システムは、電力損失時または電力損失時の前後にメモリへの書き込み動作が進行中かを決定するように構成される書き込み時の欠落軽減回路をさらに含む。電力損失時または電力損失時前後に進行中である書き込み動作に応答して、書き込み時の欠落軽減回路は、書き込み時の欠落データおよびメタデータが不揮発性キャッシュに格納されるようにする。書き込み時の欠落データは、前記電力損失の結果として、劣化した状態または訂正不可能な状態のまま残されたデータを含む。メタデータは、書き込み時の欠落データを記述する。
【０００５】
種々の実施形態のこれらおよび他の特徴ならびに態様は、以下の詳細な考察および添付の図面を考慮して理解され得る。
【図面の簡単な説明】
【０００６】
以下の略図において、複数の図中の類似／同一の構成要素を特定するために同一の参照番号が用いられ得る。
【図１】図１は、いくつかの実施形態に従う、書き込み時の欠落軽減プロセスを実装することができるシステムのブロック図である。
【図２】図２は、電力損失の発生時にメモリのセクタに書き込まれるセクタを図示する。
【図３】図３は、いくつかの実施形態に従う、書き込み時の欠落軽減プロセス中にデータを保存するためのプロセスを図示するフロー図である。
【図４】図４は、いくつかの実施形態に従う、書き込み時の欠落軽減プロセス中にデータを復旧させるためのプロセスを図示するフロー図である。
【図５】図５は、いくつかの実施形態に従う、書き込み時の欠落軽減プロセス中にデータを保存するためのプロセスを図示するフロー図である。
【図６】図６は、いくつかの実施形態に従う、書き込み時の欠落軽減プロセス中にデータを復旧させるためのプロセスを図示するフロー図である。
【図７】図７は、いくつかの実施形態に従う、書き込み時の欠落軽減プロセスを実装することができるシステムのブロック図である。
【発明を実施するための形態】
【０００７】
種々の例示的実施形態の以下の記載において、本明細書の一部を形成する添付の図面に対する参照がなされ、またこれらの図面には例示として種々の例示的実施形態が示される。本明細書に付属する特許請求の範囲の範囲を逸脱することなく構造上および運用上の変更がなされ得るため、他の実施形態が利用され得ることが理解されるものとする。
【０００８】
例えばハードディスクドライブ（ＨＤＤ）またはハイブリッドハードドライブ（ＨＨＤ）の磁気媒体、またはソリッドステートドライブ（ＳＳＤ）またはＨＨＤの電子不揮発性メモリ（例えば、ＮＡＮＤフラッシュ）などのデータ記憶デバイスの不揮発性メモリへの書き込みの間、例えばホストからデータ記憶デバイスの不揮発性メモリへ供給される電力などの供給される電力の予期しない損失は、回復不可能であるかまたは劣化したデータがその媒体上に残留する結果となり得る。例えば、電力損失の発生時または電力損失の発生時の前後に、データをメモリに書き込む（プログラムする）ための書き込み動作が実行されている場合、電力不足により現在実行されているメモリ媒体への書き込み動作が完了することができない場合がある。データがメモリに書き込まれた場合でも、このデータはまだ検証されていない場合がある。例えば、ハードディスクドライブ（ＨＤＤ）において、データはオフトラックで書き込まれた可能性があり、オントラックアライメントの確認のためにドライブが次のサーボウェッジに回転することができない場合がある。別の例としては、ソリッドステートドライブ（ＳＳＤ）において、ＮＡＮＤフラッシュ上の蓄電池がその意図する充電レベルに達しておらず、よってデータがメモリから読み出された時、データの回復を妨げる場合がある。業界内で、同一の現象を説明するために、「書き込みスプライス（ｗｒｉｔｅ−ｓｐｌｉｃｅｓ）」、「中断された書き込み（ｉｎｔｅｒｒｕｐｔｅｄ  ｗｒｉｔｅｓ）」、「不完全な書き込み（ｉｎｃｏｍｐｌｅｔｅ  ｗｒｉｔｅｓ）」、または「部分的な書き込み（ｐａｒｔｉａｌ  ｗｒｉｔｅｓ）」などの他の類似の用語および記載がしばしば用いられるが、これらの障害条件はまとめて「書き込み時の欠落（ｔｏｒｎ  ｗｒｉｔｅｓ）」と称される。本明細書において「電力損失時」および「電力損失時または電力損失時の前後」という用語は、書き込み時の欠落データをもたらすことがあるメモリへの電力損失の前、その間、および／または後を指すために用いられる。
【０００９】
有効に書き込まれているメモリへの書き込み動作が完了するのに十分な量の電力が利用可能な状態で保たれるように、電力損失を早期に検出することは、常に可能であるとは限らない。これは、サイズが小さい、例えば５１２バイトのセクタを有するメモリから、セクタのサイズがより大きい、例えば４０９６バイトのセクタを有するメモリへの遷移でより悪化する。電力損失は、いかなるエラー回復が生じるためにも十分な時間がなく、誤りのあるセクタ（単数または複数）がエラーのまま残り得るということをしばしば意味する。さらに、オフトラックエラーなどのエラー状態は、電力損失によって激化され得る。
【００１０】
記憶デバイスがハードディスクドライブである場合、電力損失の発生によるヘッドの水平および／または垂直のずれにより、データエラーが起き得る。電力損失時、供給される電圧の劣化は、格納されたデータの劣化に繋がる無数の点においてシステムに影響を与えることがある。例えば、電圧劣化はアクチュエータがオフトラックで移動し、オフトラックで書き込まれたデータが回復不可能であるほどまでに損なわれることがある。
【００１１】
いくつかの構成において、特定のメモリ、例えばマルチレベルセル（ＭＬＣ）フラッシュに対して進行中の書き込み動作を中止し、かつ書き込み時の欠落データを異なる構成の同一の種類のメモリおよび／または異なる種類のメモリに格納することが好都合であり得る。一例として、メモリがＭＬＣフラッシュであるとすると、書き込み時の欠落データを異なる構成で格納することは、書き込み時の欠落データをシングルレベルモード（シングルモードレベルセル（ＳＭＬＣ）フラッシュ）で用いられるＭＬＣフラッシュセル内部に格納することを伴う場合がある。別の例として、メモリがＭＬＣフラッシュであるとすると、書き込み時の欠落データをより異なる種類のメモリ内部に格納することは、書き込み時の欠落データをスピントルクランダムアクセスメモリ（ＳＴＲＡＭ）に格納することを伴う場合がある。
【００１２】
電力損失の検出は、システムの電力供給の電圧降下（損失率）挙動に依存し得る。この電圧降下挙動は、電力供給またはホストシステムの製造者によって異なる場合があり、電力損失の間に有効な書き込み動作が進行中である場合、エラー発生前の残り時間の量における不確実性に繋がる。本明細書に記載のシステムは、電圧降下の割合に対し概して敏感でない。
【００１３】
多くの実装において、データ記憶デバイスはそれぞれのホスト論理ブロックをメモリのより大きなメモリセクタの一部として格納する。例えば、それぞれの論理ブロック、例えばホストまたは他所からの論理ブロックは５１２バイトであり得るが、４ＫＢのディスクセクタまたはフラッシュページに格納され、典型的に７つの他のホスト論理ブロックとともにグループ化される。メモリに格納されているメモリセクタおよび論理ブロックが同一サイズである場合、電力損失は有効に書き込まれている論理ブロックについて回復不可能であるセクタのみをもたらし得る。しかしながら、データ記憶デバイスが、格納されている論理ブロックのサイズより大きいメモリセクタまたはページのサイズを有する場合、書き込み動作は、書き込まれている論理ブロックだけでなく、同一のメモリセクタ（またはページ）内に格納されている他の論理ブロックにも影響を与える書き込み時の欠落をもたらすことがある。この「静止状態の（ａｔ  ｒｅｓｔ）」データに対するさらなるリスクは、とりわけ望ましくない。
【００１４】
前述のように、書き込み時の欠落条件は、書き込み動作と関連付けられた論理ブロックのうちのいくつかがメモリに書き込まれた後、まだ検証されていないときに電力損失が発生したときに起こる場合がある。これらの論理ブロックは、特にこれらがすでにメモリに書き込まれているため、未履行の書き込みコマンドに直接関連付けられていない場合がある。書き込み動作と関連付けられた、ホスト（または他所）からのいくつかの論理ブロックは、まだメモリに書き込まれていない場合がある。これらの論理ブロックは、未履行の書き込みコマンドと関連付けられることになる。書き込み時の欠落は、未履行の書き込みコマンドと関連付けられていない論理ブロックの破損をもたらす場合があり、これは望ましくない。「書き込み時の欠落データ」という用語は総称的に、前記電力損失の結果として劣化した状態または訂正不可能な状態のまま残されたデータを指し、１）メモリに書き込まれているがまだ検証されていない書き込み動作と関連付けられたデータのブロック（または他のユニット）、２）メモリにまだ書き込まれていない書き込み動作と関連付けられたデータのブロック（または他のユニット）、３）メモリに部分的に書き込まれたデータのブロック（または他のユニット）、４）電力が損失した時または電力が損失した時の前後に書き込まれたデータのブロックとグループ化された関連付けられるデータのブロック（または他のユニット）であって、関連付けられる論理ブロックは、書き込まれているデータのブロックの中断された書き込みの結果、再書き込みされる必要がある、データのブロック（または他のユニット）、および５）ホストの電力損失時またはホストの電力損失時の前後に進行中の、例えばＳＳＤ／ＨＨＤのガーベジコレクション、内部データ記憶デバイスまたはシステムファイル／メタデータの更新などの内部データ記憶デバイスのバックグラウンドのアクティビティに起因する、メモリ書き込みと関連付けられたブロック（または他のユニット）を含む。
【００１５】
本明細書に記載の実施形態は、書き込み時の欠落によって引き起こされる回復不可能であるエラーを取り除くか、または大幅に低減するための取り組みを伴う。これらの実施形態によれば、電力損失の検出に応答して、前記電力損失の結果として、劣化した状態または訂正不可能な状態のまま残された可能性のあるデータを含む書き込み時の欠落データは、保存されたセクタを記述するメタデータとともに不揮発性キャッシュに保存される。
【００１６】
不揮発性キャッシュとは、電力損失時の記憶により適した記憶媒体を指す。ハードディスクドライブの中には、不揮発性キャッシュが電子ＮＯＲまたはＮＡＮＤフラッシュメモリとしてしばしば具現化されている。ソリッドステートドライブの中には、不揮発性キャッシュが好ましくは予め消去された、シングルレベルチャージ（ＳＬＣ）モードでしばしば動作するＮＡＮＤフラッシュとしてしばしば具現化されている。メモリは別個のダイであることができ、またはメインメモリの専用領域もしくはパーティションであることができる。メモリはまた、磁気ランダムアクセスメモリ（ＭＲＡＭ）、スピントルクランダムアクセスメモリ（ＳＴＲＡＭ）、相変化メモリ（ＰＣＭ）、または電力損失時のデータの高速記憶により適した任意の他の種類のメモリなどのまったく異なる種類のメモリであってもよい。
【００１７】
電力損失時に格納されているメタデータは概して、書き込み時の欠落データについての記述的情報を含む。メタデータは、例えば、書き込み時の欠落データについてのアドレス情報、例えば、電力損失前にデータブロックがどこに書き込まれることを意図されていたかを特定するメモリ（例えば、論理または物理アドレス）の場所、または電力が再応用されたときにデータブロックが書き込まれるアドレスを含み得る。メタデータは、書き込み時の欠落データの数量を含み得る。書き込みスキップ動作について、メタデータは、スキップマスクパターンを含み得る。メタデータはまた、書き込み時の欠落データについて、またはメタデータについてのエラー検出または訂正符号を含み得る。
【００１８】
図１は、書き込み時の欠落エラーを軽減することができるデータ記憶デバイス１００のブロック図である。いくつかの場合、データの論理ブロック、例えばメモリ１２０に格納されることになるホストデータは、データ記憶コントローラ１１０に転送される。コントローラ１１０は、いくつかの構成においてデータ記憶デバイスのための主記憶装置としての役割をし得るメモリ１２０へのデータ転送およびメモリ１２０からのデータ転送を制御するように構成されるメモリコントローラ１１２を含む。コントローラ１１０は、不揮発性キャッシュ１４０へのデータ転送および不揮発性キャッシュ１４０からのデータ転送を制御するように構成される不揮発性キャッシュコントローラ１１４を含む。いくつかの実施形態において、不揮発性キャッシュ１４０はメモリの一部分１２０を備えてもよく、メモリコントローラ１１２および不揮発性キャッシュコントローラ１１４は同一の物理ハードウェアのまたは同一の物理ハードウェアの一部分を備えてもよいことに留意されたい。コントローラ１１０は、本明細書においてさらに詳細に記載されるように、電力損失の間に進行中のメモリへの書き込み動作１２０と関連付けられたセクタのエラーを低減する書き込み時の欠落軽減スキームを実装するように構成される、書き込み時の欠落軽減モジュール１１５を含む。
【００１９】
メモリ１２０は、回転磁気ディスクメモリ、磁気テープ、ＮＯＲフラッシュ、ＮＡＮＤフラッシュ、相変化メモリ（ＰＣＭ）、不揮発性スタティックランダムアクセスメモリ（ＮｖＳＲＡＭ）、バッテリバックアップスタティックランダムアクセスメモリ（ＢＢＳＲＡＭ）、磁気ランダムアクセスメモリ（ＭＲＡＭ）、スピントルクＲＡＭ（ＳｔＲＡＭ）、抵抗変化型ＲＡＭ（ＲＲＡＭ（登録商標））および／または任意の他の種類の不揮発性メモリを含む、任意の不揮発性メモリを含み得る。不揮発性キャッシュ１４０は、上記に列挙されたメモリの種類のうちのいずれか、またはホストから供給される電力の損失の際にデータの格納に適した他のものを含み得る。典型的に、不揮発性キャッシュは、１）外部から供給された電力を用いることなくデータを長時間保持する能力、および２）ホスト電力損失後のデータ記憶デバイスの電力が、不揮発性キャッシュ１４０および／または不揮発性キャッシュコントローラ１１４がもはやデータを格納するように動作しない点を下回って下降する前の利用可能な時間内に書き込み動作が完了するような速度で確実に書き込まれることができる。
【００２０】
図１に示されるシステム１００は、電力監視回路１５１および随意的な電力バックアップ回路１５０を示す。電力監視回路１５１は、ホストによって供給される電力損失の兆候を感知するように構成される。電力監視回路１５１は、メモリおよび／または他のシステム構成要素への供給電力の損失が生じた場合、警告を提供する検出論理を含み得る。例えば、電力損失の兆候は、１つ以上のホストシステム電力供給電圧、例えばデータ記憶デバイス１００の通常の動作に用いられる電力供給電圧の電圧降下の指定の割合またはレベルであり得る。
【００２１】
図１は、データ記憶コントローラ、例えば、メモリコントローラおよび不揮発性キャッシュコントローラ、および不揮発性キャッシュが電力を保持する、時間の量を拡張するように構成される随意的な電力バックアップ回路１５０を示す。電力バックアップ回路１５０は、電力損失に続く指定の期間、データ記憶コントローラ１１０および／または不揮発性キャッシュ１４０に電力を届けることができる１つ以上のエネルギー貯蔵デバイス、例えば、コンデンサ、スーパーコンデンサ、バッテリおよび／または他のエネルギー貯蔵デバイスを含み得る。回転ディスクをメモリとして用いる実装において、運動エネルギーをデバイスの一部分１００のための電力に変換するためのレギュレータ（図示せず）を含んでもよい電力バックアップ１５０を供給するために、回転ディスクの運動エネルギーが用いられ得る。いくつかの構成において、回転ディスクによって生成される起電力（ＥＭＦ）は、電力バックアップ回路１５０におけるコンデンサまたはバッテリを充電または再充電するために用いられ得る。電力モニタ１５１および随意的に電力バックアップ１５０は、該当する書き込み時の欠落データの保存を開始するために、および不揮発性キャッシュ１４０にデータを保存するための十分な時間を確保するために、電力損失を検出するように配置される。電力損失は、書き込み時の欠落軽減動作に従い、電力損失事象の兆候からデータおよびメタデータを書き込む支援をするために十分な電力がないという点までに、比較的短い転送時間を有し得る。電力バックアップ回路を採用するシステムにおいて、電力損失は、比較的長い転送を有することがあり、本明細書に記載の書き込み時の欠落軽減の取り組みを実装するためのさらなる時間を確保する。
【００２２】
ホスト書き込み動作が実装されると、書き込まれているセクタは、例えばメモリコントローラ１１２（図１）または外部ＤＲＡＭ（図示せず）に置かれた中間メモリまたはバッファに一定期間存在し得る。中間メモリは、他の目的と合わせて、ホストインターフェースとメモリのデータ転送速度との間の速度を適合させる目的を果たす。書き込み時の欠落軽減１１５は論理であり、しばしば電力モニタ１５１からの電力損失の通知に際し、書き込み時の欠落データの不揮発性キャッシュ１４０への格納を促進するマイクロプロセッサの中の命令の形をとる。
【００２３】
図２は、電力損失発生時にメモリに書き込まれているデータを図示したものである。図２は、現在の書き込み動作の間に書き込まれているプロセス中であるメモリの一部分（ディスクのセクタまたはフラッシュのページである場合がある）２２０と、１つ前の書き込み動作の間に書き込まれたメモリの一部分２１０とを示す。本例において、これらのメモリの一部分２１０、２２０は、格納されている論理ブロックよりも大きい。例えば、メモリ部分２２０は、８つの５１２バイトのホスト論理ブロックを格納することができる４０９６バイトのセクタである場合がある。
【００２４】
図２に描画されているように、書き込み動作はメモリセクタ２２０に対して進行中である。セクタ０〜４はメモリ２２０に書き込まれており、まだ検証されていない。データの検証は、セクタの中のデータがメモリに適切に格納されたことを示すフィードバック信号を受信することを伴う。セクタ５は不完全に書き込まれており、セクタ６〜７はまだメモリに書き込まれていない。セクタ５〜７はメモリ部分２２０のための書き込み動作と関連付けられ、未履行の書き込みコマンドとも関連付けられている。
【００２５】
セクタ０〜４が書き込まれた（が検証されていない）後に電力損失が発生するという書き込み時の欠落の想定の発生を考慮すると、セクタ５は部分的に書き込まれており、セクタ６〜７はまだメモリ２２０に書き込まれていない。電力損失発生後、セクタ０〜４を検証するための、および書き込みを完了し、かつセクタ５〜７の検証をするための十分な時間がない場合がある。この想定では、エラーはメモリ２２０に格納されたデータに発生しやすい。
【００２６】
メモリの種類により、いくつかの実施形態において、書き込み時の欠落軽減プロセスは、ブロック０〜５を不揮発性キャッシュに格納すること、および随意的に、ブロック６および７を不揮発性キャッシュに格納することを伴い得る。他の実施形態において、メモリの一部分２１０、２２０、例えばディスクセクタは「アトミック」であり、これはセクタ２１０、２２０が、アクセス可能な最小ユニットのメモリであることを意味する。この想定では、書き込み時の欠落軽減プロセスは、ブロック０〜７を不揮発性キャッシュに格納する。
【００２７】
図３は、図１に示されるシステム１００などのデータ記憶デバイスに実装され得る、いくつかの実施形態に従う書き込み時の欠落軽減プロセスを図示したフロー図である。本システムは電力を監視し、例えば電力供給の電圧降下などのデータ記憶デバイスへの電力損失の兆候を感知３１０する。電力損失の兆候の検出に応答して、書き込み時の欠落軽減プロセスは、電力損失発生時に書き込み動作が進行中３２０かを決定する。書き込み動作が進行中でなかった場合、動作は３３０で終了する。図示されていないが、３３０で、デバイスは随意的に、復旧すべきものがないことを示すメタデータを書き込んでもよい。進行中の書き込み動作３２０に応答して、書き込み時の欠落軽減プロセスは、例えば、図２のブロック０〜４で、データがメモリに書き込まれているが、まだ検証されていないかどうかを決定する。書き込み時の欠落軽減プロセスは、まだ検証されていないデータを特定するために状態情報を調査し得る。まだ検証されていないデータは、最近メモリに書き込まれたが、これについてこのデータが適切に書き込まれたことを示すフィードバックがまだ受け取られていない、ブロックまたは他のメモリのユニットである。例えば、メモリが回転ディスクである場合、このフィードバックは、ドライブヘッドがシリンダ上の限度内であることを確認するために、他の基準と合わせてサーボサンプル処理によって達成され得る。
【００２８】
少なくとも、メモリに書き込まれたがまだ検証されていないデータが、不揮発性キャッシュ、例えば、図２に図示されるブロック０〜５に格納３４０される。いくつかの実施形態において、（アトミック）メモリセクタのすべてのブロックが不揮発性キャッシュ、例えば、図２に図示されるブロック０〜７に格納され得る。データを記述するメタデータもまた、不揮発性キャッシュに格納３５０される。データおよび／またはメタデータは、ロバスト性の強化のため、エラー検出および／またはエラー訂正符号で保護され得る。
【００２９】
パワーオンシーケンスの一部として、書き込み時の欠落軽減モジュールは、復旧が必要なブロックがあるかを決定するために、不揮発性キャッシュからメタデータを読み出す。不揮発性キャッシュにデータが存在する場合、次にこれらのデータは不揮発性キャッシュから読み出される。メモリが、データがメモリに書き込まれることができる状態に一旦なると、メタデータによって示されるメモリの適切な場所（複数可）に不揮発性キャッシュからのブロックが書き込まれる。
【００３０】
図４は、システム電力が復旧４１０した後に発生する、書き込み時の欠落軽減のプロセスを図示したフロー図である。書き込み時の欠落軽減モジュールは、電力損失が発生した時にメモリ書き込み動作が進行中であったかを決定４２０する。メモリ書き込み動作が進行中でなかった場合、不揮発性キャッシュからデータを復旧４３０する必要はない。
【００３１】
電力損失が発生した時にメモリ書き込み動作が進行中であったという決定４２０に応答して、書き込み時の欠落軽減モジュールは、不揮発性キャッシュからメタデータを読み出す４４０。不揮発性キャッシュに格納されたデータ（例えば、論理ブロック／セクタ／ページ）は、メタデータから特定４５０される。書き込み時の欠落軽減モジュールもまた、データがメモリに格納されることになっていた、少なくとも１つの場所（例えば、少なくとも１つの論理ブロックアドレス）をメタデータから特定４６０する。データは不揮発性キャッシュから読み出され４７０、メタデータによって示される場所でメモリに書き込まれる４８０。
【００３２】
上述したように、データは、データ記憶デバイスの中の１つ以上の所に存在する場合があり、例えば、データはハイブリッドドライブ上の磁気媒体およびフラッシュの両方に冗長的に格納されていることがある。書き込み時の欠落軽減を提供するデータ記憶取り組みは、不揮発性メモリに冗長的に格納されていない、書き込み動作と関連付けられたデータを保護するために有用である場合がある。これらの想定において、書き込み動作と関連付けられたデータは、このデータが冗長的に格納されている場合、キャッシュに格納されない。
【００３３】
いくつかの構成において、書き込み時の欠落軽減は、例えば、データの再書き込みを伴うバックグラウンド修復活動と関連付けられたデータを保護するために用いられ得る。例えば、データ記憶デバイスは、多くのビットエラーを持つブロックを捜索する媒体のバックグラウンドスキャンを行ってもよく、また格納されたデータの質を向上するため、データをメモリに再書き込みしてもよい。このプロセスが電力損失によって中断された場合、書き込み時の欠落軽減システムはまた、ホストデータブロックと同様に同一の手順を踏むことにより用いられ得る。
【００３４】
本明細書に記載の書き込み時の欠落軽減プロセスは、データがメモリに書き込まれる際、書き込み動作の進行を追跡することを伴い得る。電力損失時に、メモリに書き込まれているがまだ検証されていない、書き込み動作と関連付けられたデータは「欠落（ｔｏｒｎ）」しており、書き込み時の欠落軽減がなければデータをメモリから回復不可能にする。書き込み時の欠落軽減プロセスに伴うデータは、例えば、メモリに書き込まれているがまだ検証されていないブロックおよびメモリに書き込まれるプロセス中であるブロックを含み得る。書き込み時の欠落軽減プロセスに伴うデータはまた、まだ書き込まれていないが、アトミックメモリセクタに含まれることになるブロックを含み得る。書き込み動作の進行を追跡することは、書き込み時の欠落軽減プロセスが欠落データを特定することを可能にする。これらの欠落ブロックは、関連付けられるメタデータと合わせて不揮発性キャッシュに格納される。
【００３５】
図５は、いくつかの実施形態に従う書き込み時の欠落軽減プロセスのフロー図である。図５に図示されるプロセスは、例えば図１のシステム１００によって実装され得る。電力モニタ１５１（図１を参照）は、保護を必要とする欠落データをもたらす書き込み動作を中断する電力損失または他の種類の不具合の兆候についてシステム電力を監視５１０する。他の種類の不具合の例は、システムのウォッチドッグタイマーの期限切れ、モータの速度外エラー（例えば、ＨＤＤ上）、または検出されたバックアップ電力供給障害（例えば、ＳＳＤ上）などの壊滅的なエラー条件である。電力損失または他の壊滅的なエラー条件が検出されると、不揮発性キャッシュコントローラ１１４（図１に図示される）は、書き込み時の欠落データを不揮発性キャッシュ１４０（図１に図示される）に保存するための呼び出しを書き込み時の欠落軽減モジュール１１５（図１に図示される）に発行５２０する。書き込み時の欠落軽減モジュールは、電力損失時またはメモリ障害時に書き込み動作が進行中であったかを決定５３０する。進行中の書き込み動作がなかった場合、次に保存されたデータの量はメタデータにおいてゼロに設定５５０され、メタデータ（データなし）が不揮発性キャッシュに保存５８０される。
【００３６】
電力損失時に書き込み動作が進行中であったという決定５３０に応答して、保存すべき書き込み時の欠落データの量、例えばブロックまたは他のデータユニットの数が書き込み時の欠落軽減モジュールによって決定５６０される。メタデータは、不揮発性キャッシュに保存されているデータの少なくとも１つのメモリ場所を含むように更新５７０される。メタデータおよびデータは、不揮発性キャッシュに保存５８０される。メタデータおよびデータが保存されたことを示す書き込み時の欠落軽減プロセスのステータスは、不揮発性キャッシュコントローラに戻される５９０。
【００３７】
いくつかの実施形態において、任意のメモリ書き込み動作の間スキップされるようにフラグが付けられたメモリセクタが存在し得る。書き込み動作は、スキップされたセクタへのデータの格納を防ぐ、スキップマスクコマンドを含むことができる。スキップされたセクタを考慮に入れる実施形態において、書き込み時の欠落軽減プロセスの一部として格納されたメタデータは、これらのスキップされたメモリセクタを特定するために追加されるさらなるフィールドを含み得る。
【００３８】
図６は、メモリ１２０（図１）への電力復旧に応答して実装され得る書き込み時の欠落軽減プロセスのフロー図である（図１）。メモリ１４０への電力復旧６１０に応答して、不揮発性キャッシュコントローラ１１４（図１）は、格納されたメタデータおよびデータとともに、書き込み時の欠落軽減モジュール１１５（図１）への呼び出しを発行６２０する。呼び出しに含まれるメタデータから、書き込み時の欠落軽減モジュールは、書き込み時の欠落軽減プロセスの間に保存されたデータユニットの数、例えば、ブロック／セクタ／ページがゼロより大きいかを決定６３０する。保存されたデータ単位の数がゼロより大きくない場合、書き込み時の欠落軽減モジュールはメタデータをクリア６８０し、ステータスを不揮発性キャッシュコントローラに戻す６９０。
【００３９】
保存されたデータ単位の数がゼロより大きいという決定に応答して、書き込み時の欠落軽減モジュールは、メタデータによって指定された場所に、およびデータ範囲で、メモリに書き込まれる６６０ようにする。スキップされたセクタを説明する実施形態において、スキップマスクフィールドがメタデータに提示されている場合、特別なプロセスが用いられ得る。例えば、スキップマスクパターンを含むより複雑なメタデータが格納６７０され得る。すべてのデータがメモリに復旧６８０された後、メタデータはクリアされ、データは不揮発性キャッシュから消去される。状態は不揮発性キャッシュコントローラに戻される６９０。
【００４０】
図７は、いくつかの実施形態に従い、欠落したデータ書き込みエラーを軽減することができるシステム７００のブロック図である。メモリ７２０に書き込まれたデータブロック（または他のデータユニット）は、ホストまたは他所（図７に図示せず）からデータ記憶コントローラ７１０に転送される。データ記憶コントローラ７１０は、メモリ７２０に転送されるデータおよびメモリ７２０から転送されるデータを制御するように構成されるメモリコントローラ７１２を含む。データ記憶コントローラ７１０は、不揮発性キャッシュ７４０に転送されるデータおよび不揮発性キャッシュ７４０から転送されるデータを制御するように構成される不揮発性キャッシュコントローラ７１４を含む。この実施形態において、セクタのための書き込み動作および書き込み動作のための関連付けられるメタデータは、メモリ７２０への各書き込み動作について不揮発性キャッシュ７４０を通る。ゆえに、電力損失が生じた場合、まだ検証されていないデータブロック、不完全に書き込まれたデータブロック、および／またはまだ書き込まれていないデータブロックは、不揮発性キャッシュ７４０に保持される。図７に図示される構成は、電力損失の監視および／または電力バックアップ回路の必要を排除する。
【００４１】
本明細書に開示される実施形態は、書き込み時の欠落軽減を実装するための方法を含む。例えば、書き込み時の欠落軽減方法は、ホストから供給される電力損失事象またはシステムメモリに影響を与える壊滅的な障害を検出することを含む。メモリへの書き込み動作がかかる時またはその前後に進行中であることに応答して、書き込み動作と関連付けられたデータは、データについてのアドレス場所情報を含むメタデータと合わせて不揮発性キャッシュに格納される。メモリへの書き込み動作は、複数の論理ブロックを１つ以上のメモリセクタまたはページに格納し得る。不揮発性キャッシュに格納される書き込みコマンドと関連付けられたデータは、書き込み時の欠落データおよびメタデータを含む。
【００４２】
不揮発性キャッシュは、不揮発性キャッシュが外部から供給された電力を用いることなく長時間データを保持することができるように、および書き込み動作がシステム電力損失後の利用可能な時間内に完了するような速度で確実に書き込まれ得るように選択される。いくつかの構成において、メモリは回転磁気ディスクを備え、不揮発性キャッシュはフラッシュメモリを備える。
【００４３】
いくつかの構成において、書き込み時の欠落データおよび／またはメタデータは、書き込み時の欠落データおよび／またはメタデータを不揮発性キャッシュに格納する前に、エラー検出および／またはエラー訂正コードを用いて符号化される。いくつかの構成において、メタデータは、格納されたデータのヘッダセクションに格納され得る。メタデータのフィールドは、不揮発性キャッシュに格納されるデータの量、例えば格納されたセクタの数を示し得る。不揮発性キャッシュ（例えば、電力損失時にいかなる書き込み動作も進行中でない）に格納すべきいかなる欠落データも存在しないという想定において、格納されたデータの量を示すメタデータフィールドはゼロに設定される。
【００４４】
電力が復旧した後、メモリがデータを受け取ることができると、書き込み時の欠落軽減プロセスは、電力損失時にメモリへの書き込みコマンドが進行中であったかを決定する。書き込みコマンドが電力損失時に進行中であることに応答して、メタデータおよび書き込み時の欠落データが不揮発性キャッシュから取り出される。メタデータは、書き込み時の欠落データがメモリのどこに復旧されるべきかを特定するために用いられる。書き込み時の欠落データがメモリに書き込まれる。
【００４５】
いくつかの書き込み時の欠落軽減方法は、電力損失時に書き込みコマンドが有効であるか、および書き込みコマンドが非冗長データを含むかを決定することを伴う。書き込み動作のデータが冗長である場合、このデータは不揮発性キャッシュに格納されない。非冗長データを含む進行中の書き込みコマンドに応答して、非冗長データはこの非冗長データに関する情報を含むメタデータとともに不揮発性キャッシュに格納される。例えば、このメタデータは、書き込み時の欠落データ（非冗長データ）が復旧されることになるメモリの少なくとも１つの論理ブロックアドレスを含み得る。メタデータはまた、メモリのスキップされたセクタに関する情報、および他の情報を格納することを含み得る。
【００４６】
いくつかの構成において、メモリは回転磁気ディスクであり、書き込み時の欠落軽減プロセスは、書き込み動作の実行中に磁気ディスクの位置を追跡することを含む。電力損失の間に書き込み動作が停止するディスクの位置が特定され、この停止位置を用いて不揮発性キャッシュに格納されることが必要なセクタの数が決定される。
【００４７】
いくつかの実装において、本方法は、電力損失時に修復活動が有効であるかを決定することを含む。修復活動が有効である場合、修復活動と関連付けられた非冗長データは、キャッシュに格納される。修復活動は例えば、劣った、または不十分に書き込まれたセクタまたはページを探すバックグラウンド媒体スキャンアクティビティであり得る。媒体スキャンは、再生させるために、劣ったセクタ／ページの再書き込みを試みてもよい。このアクティビティの間に電力が損失した場合、データ損失を防ぐために書き込み時の欠落システムが用いられ得る。
【００４８】
電力が復旧した後に、メタデータは不揮発性キャッシュから読み出され、電力損失時に非冗長データが不揮発性キャッシュに格納されたかを決定するために用いられる。電力損失の間に不揮発性キャッシュに格納されている非冗長データに応答して、非冗長データが復旧されているべきメモリの１つ以上の場所が特定される。非冗長データは、不揮発性キャッシュから取り出され、不揮発性キャッシュから読み出され、メモリの場所に復旧される。
【００４９】
いくつかの構成において、非冗長データがキャッシュに格納されたかを決定することは、不揮発性キャッシュに格納されたセクタの数を示すメタデータのフィールドを読み出すことを含む。本処理は、メタデータのフィールドがゼロでない値に設定されている場合、非冗長データが不揮発性キャッシュに格納されたことを決定することを含む。いくつかの構成において、非冗長データをメモリの場所に復旧することは、スキップされたセクタに関する情報を用いて非冗長データを復旧させることを含む。非冗長データが復旧された後、メタデータはリセットされ、非冗長データは不揮発性キャッシュから消去される。
【００５０】
上述の種々の実施形態は、特定の結果を提供するように相互作用する回路および／またはソフトウェアモジュールを用いて実装され得る。コンピュータ技術の当業者は、当技術分野で一般に知られている知識を用いて、モジュールのレベルまたは全体として、かかる記載の機能性を容易に実装することができる。例えば、本明細書に図示されるフローチャートは、プロセッサによる実行のためのコンピュータ可読命令／コードを作成するために用いられ得る。かかる命令は、当技術分野で知られているように、コンピュータ可読媒体上に格納され、実行のためにプロセッサに転送され得る。上記に示される構造および手順は、上述のように、データ記憶デバイスにおける書き込み時の欠落軽減の管理を促進するために用いられ得る実施形態の単なる代表例である。
【００５１】
本開示の記載がハードディスクドライブおよびソリッドステートドライブなどのブロック記憶デバイスについて述べられていることも、これらのデバイスは通常のものであるため、注目に値する。これらの同一の概念は、ブロックではなくデータ（例えば、オブジェクトとして）を格納するデバイスにも適用可能である。
【００５２】
別様に示されない限り、本明細書および特許請求の範囲において用いられる形状、量、および物理的特性を表現するすべての数字は、すべての例において「約（ａｂｏｕｔ）」という用語によって変更されていることが理解されるものとする。したがって、反対に指示されない限り、前述の明細書および添付の特許請求の範囲に記載の数値パラメータは、本明細書に開示される教示を利用して当業者によって取得が追及される所望の特性によりさまざまであり得る近似値である。端点による数値の範囲の使用は、その範囲内のすべての数（例えば、１〜５は、１、１．５、２、２．７５、３、３．８０、４、および５を含む）ならびにこの範囲内の任意の範囲を含む。
【００５３】
例示的実施形態の前述の記載は、例示および説明を目的として提示されている。網羅的であるか、または発明概念を開示される正確な形態に限定することは意図されていない。上記の教示を踏まえて、多くの変更および変形が可能である。個別にまたは任意の組み合わせで適用され得る開示される実施形態の任意の特性またはすべての特性は、限定的でなく単に例示的であるよう意図されている。本発明の範囲は、本明細書の詳細な説明で限定されるのではなく、本明細書に添付の特許請求の範囲によって決定されることが意図される。  
【図１】
2015035247.tif 000003
【図２】
2015035247.tif 000004
【図３】
2015035247.tif 000005
【図４】
2015035247.tif 000006
【図５】
2015035247.tif 000007
【図６】
2015035247.tif 000008
【図７】
2015035247.tif 000009