フラッシュファイルシステムと電源障害耐性
組み込みシステムにおいてもっとも忌み嫌われるのは、応答時間が読めないことです。
たとえシステムにとって最悪の状況に遭遇したとしても、一定時間で応答が帰ってくることがわかっていれば、以後の対策を施すプログラムを実行することができます。
しかし、いつ制御が帰ってくるかわからないのでは、事前に対応策を組み込んでおくこともできません。
「やってみなければわからない」で許されるのは、試作研究の領域であり、最終商品に搭載されるプログラムにおいては、やれば必ずこうなる、少なくともここまではがんばってそれ以上はあきらめる、といった具体的な線が把握できないとシステム設計として許容できません。
筆者の会社で開発したフラッシュファイルシステム Fugue (フーガ) の設計においては、応答時間もさることながら、瞬断発生時にどこまでデータの損傷が発生するのかを事前に提示できることを重要なポイントとしました。
つまり、電源断が起きた場合に、どこまでを保証し、何をあきらめるのかを明確に上位プログラムに提示できることを必須要件にしたのです。
そのためには、見かけ上の高速化を演出するための内部キャッシュを排除したり、フラッシュへの書き込み処理を吟味して不確定状態のメモリブロックを発生させないといったさまざまなくふうを施しました。
また、ファイルシステムを構成する各モジュールの責任分担を明確にして、フラッシュドライバからファイルシステムまで各階層において、それぞれが遵守すべき項目を定めたために各層のモジュールの独立性が向上し、信頼性も高くなりました。
目次
- はじめに
- フラッシュとは
- NAND型フラッシュの読み出し/書き出し操作
- リード/ライトのパフォーマンス
- 不良ブロックの処理
- ビットエラーとECC
- メモリマッピング
- リクラメーション
- ウェアレベリング
- フラッシュファイルシステムと電源障害耐性
- FATファイルシステムの電源障害耐性
- 電源瞬断による破損
- 電源瞬断対策

