プログラムまたは消去操作中に電源障害またはリセットが発生した場合のフラッシュデバイスの回復 - KBA218817 - Community Translated (JA)

Version 1

    Community Translated by HiOm_1802421      Version: **

     

    質問:

    サイプレスのフラッシュ デバイスをプログラムまたは消去操作中に突然の電源断またはフラッシュ リセットが発生した場合、復旧するにはどうすれば良いですか?

     

    回答:

    任意の場所のフラッシュ データの状態は、最後のブロックまたはセクタの消去以降、その位置で実行された全てのフラッシュ操作が、継続的な電源供給の下で開始され完了まで実行された事が判っている場合にのみ信頼できます。ここで位置とは、フラッシュ操作の範囲内で、1から最大ビット数までのビットの集合体です。

    このシーケンスのいずれかのフラッシュ操作が任意の場所で中断された場合、その場所のフラッシュ データの状態は不確定であり、以降のリードやプログラムを信頼することはできません。言い換えれば、すべて0からすべて1、そしてその中間、意図したデータの一見正しそうなイメージも含めて、安定したデータ状態や不安定なデータ状態があり得るということです。中断された操作を検出し、正しい回復行動を実行するのはシステムの責任です。

    1. 中断された消去に対する回復:ブロックまたはセクタを再度消去します。
    2. 中断されたプログラムに対する回復:
      1. 元データが存在する場合は、データを新しい場所に再度プログラムします。
      2. プログラムが中断された場所を「信頼できない」としてマークし、この場所を含むブロックまたはセクタを再度消去できるようになるまで、その場所をリードまたはプログラムに使用しないでください。

    一部のソースは、中断されたプログラムに対して、この回復を推奨しています:

    • 元データが存在する場合は、データを新しい場所に再度プログラムします。

    ただし、この方法で常に信頼できるデータ状態が得られることを証明することはできません。 したがって、上記の回復の2番が、中断されたプログラムに対する最も安全な回復です。

    1. フラッシュ操作を開始することを示す値を、不揮発の位置にプログラムします。
    2. フラッシュ操作を開始し、継続的な電源で完了まで動作することを確認します。
    3. フラッシュ操作が完了したことを示す値を、不揮発の位置にプログラムします。

     

    再起動してすぐに、システムは対応する終了マークがない開始マークを走査できます。その後、システムは上記のように適切な回復行動を取る事ができます。商用およびオープンソースのフラッシュ ファイルシステムは、信頼できない場所を処理から排除するためにこのような方法を使用しています。Blunk Microsystems、Datalight、京都ソフトウェア リサーチ、およびQNXのフラッシュ ファイルシステム ソリューションは、サイプレスの最良の方法に従っている事が知られています。Linuxをサイプレスのパッチと共に使用すると、サイプレスの最良の方法にも準じます。

    一部のサイプレスのフラッシュ デバイスは、このロジックが消去アルゴリズムに組み込まれています(US 9,378,829)。その最初のデバイスは、シリアルNORフラッシュのS25FS-Sファミリです。サイプレスの、後継の65nmおよび45nmシリアルNORおよびパラレルNORデバイスにもこの機能があります。「Evaluate Erase Status」コマンドのデータシートを参照してください。このコマンドは、各フラッシュ セクタに関連付けられた開始/終了マークをチェックして、システムが中断された消去の対象となったセクタをすばやく識別できるようにします。