システムテストの必須項目(6)・フラッシュメモリやHDDなどの二次記憶装置の劣化テスト

2021年9月15日テスト品質

フラッシュメモリやHDDなどの二次記憶装置は劣化した時の動作確認が大切です

組み込み系のソフトではフラシュメモリハードディスクなどの二次記憶装置が劣化した時の動作を確認するテストの重要性が高くなってきました。二次記憶装置はその構造上、時間と共に情報を記憶する能力が低下していく劣化が起きます。この記事では、二次記憶装置の劣化の概要とそれに対応するテストの方法について紹介します。

組み込み系ソフトにも大容量のフラッシュメモリハードディスクのような大容量の二次記憶装置が良く使われるようになっています。フラッシュメモリもハードディスクも、大容量化を実現するために記憶媒体上での記憶の密度を上げた結果、劣化によるエラーの発生や情報消失が起きる割合が以前よりも高くなってきました。

特にフラッシュメモリは大容量化と価格低下が進んだ事から、利用条件によっては1か月もしないうちに情報の劣化が起きるような状況になっています。ですので、組み込みソフトのリリース前のテストとしても、二次記憶装置が劣化した時の動作を確認するテストの重要性が増しています。

フラッシュメモリやHDDはなぜ二次記憶装置と呼ぶの

ところで二次記憶装置って何でしょうか、話を進める前に二次記憶装置について簡単に紹介しておきます。コンピュータはCPU(Central Processing Unit:中央処理装置)がデータを読み出し・加工し・記録する事で色々な処理を実現します。このデータを記憶する場所が記憶装置 (memory device) です。この記憶装置の種類として、CPUから近い順に、一時記憶装置/二次記憶装置/三次記憶装置という種類分けがあります。一次記憶装置/二次記憶装置/三次記憶装置に明確な定義は無いのですが、一般的によく使われているの以下のような分類です。

一記憶装置装置:CPUと同じ回路(実際には内部のバスと呼ばれるデータ通信路)に繋がっていて高速にアクセスができる記憶装置。DRAMに代表されるようなメモリ(CPU内のキャッシュメモリは一次記憶とは呼ばない事が多いです)を指す事が多い。高速アクセスができるメリットがあるが容量辺りのコストが高いのと電源が切れると情報が失われるというデメリットがある。

二次記憶装置:CPUからは外部インターフェース回路を経由して繋がっている低速だけど大容量の記憶装置。SDカードやSSD等も含めたフラッシュメモリやHDDなどを指す事が多い。電源が切れても情報が維持されるというメリットがあるが一時記憶装置に比べてアクセス速度が遅いというデメリットがある。

三次記憶装置:コンピュータ本体とは別の筐体で提供され記憶媒体の交換による大容量を提供できる記憶装置、外部記憶装置と呼ばれる事もある。書き換え可能なDVDやCD着脱可能な HDD 、最近は見かけないが磁気テープ装置などを指す事が多い。非常に大容量の記憶ができるというメリットがあるが、取り外した記憶装置にアクセスするには非常に時間が掛かるというデメリットがある。

それぞれメリットとデメリットがあるのでコンピュータシステムのアーキテクチャを設計する段階で、どんな種類の記憶装置を使うのかが決められます。

フラッシュメモリやHDDはなぜ劣化する

フラッシュメモリやHDDは劣化するのでテストが大切ですというのがこの記事の主旨なのですが、そもそもなぜ劣化するのでしょうか。フラッシュメモリやHDDは電源を切っても情報を維持できるというメリットがあるのですが、電源が切れている間にはフラッシュメモリであれば内部の電子回路に蓄えた電荷の量で、HDDならば記憶媒体上の微小な磁石の向きで、0と1の情報を記憶しています。

しかし時間が経つとこの情報を記憶するための電荷が減っていったり、微小な磁石の向きが変わったりする事で記憶していた情報が失われる事が劣化の大元の原因です。この情報の消失は、フラッシュメモリやHDDの記憶の仕組みに依存してるので、ある程度の割合で起きてしまうのは避ける事ができません。もちろん情報が失われてしまっては二次記録装置として役に立たないので、フラッシュメメモリやHDDは様々な方法で失われた情報を回復する機能を内蔵しています。

しかしそれらの機能も万能ではないので、失われる情報が多くなると回復に時間が掛かったり回復し切れなくなったりします。その結果として、アクセス性能が低下したり記憶した情報が消失したりする事が二次記憶装置の劣化です。この二次記憶装置の劣化は最近利用が増えてきた大容量のフラッシュメモリでは特に注意が必要です。フラッシュメモリでは読み書きの回数増加高温にされさされる事でデータの消失が早まります。フラッシュメモリは最近の高集積化による大容量化によってが、かなり短かい期間で劣化が発生するような種類の物も出てきています。

例えば、3,000回の書き換えの後で、温度が60度の場合には 9日で書き込んだデータが消失するという「製品仕様」のフラッシュメモリもあります。誤解を受けないように書いておきますが、これは製品仕様なので不具合ではありません、温度が30度なら1年は劣化しないので用途によっては十分に使えます。ただし、使用しているうちに劣化が起こる事を想定したテストをしておく事は大切です。HDDではここまで短時間の劣化はしませんが、高温で動作させていると年単位では劣化によるデータの消失が起きます。

フラッシュメモリやHDDが劣化すると何が起きる

フラッシュメモリやHDDの劣化が始まっていても、大抵の場合は内部に組み込まれているエラー修復機能が働くので、表面上はデータが消える事態は起きません。エラー修復機能でも回復できない程に劣化が進み大量のデータが消えるようになると、表面上も読み出しエラーでデータが読み出せなくなる状態が起き始めます。フラッシュメモリやHDDの劣化は大まかに次の3段階で進みます。

  • 第一段階(劣化無し):殆どの記録素子は正常にデータを記録している
  • 第二段階(劣化開始):一部の記憶素子ではデータの消失が起きるが内部のエラー修復機能でデータが回復されている
  • 第三段階(劣化拡大):多くの記憶素子でデータの消失が起きてエラー修復機能でも回復できない領域が発生する

第二段階では、書き込んだデータはちゃんと読み出せるのですが、内部ではエラー修復機能が動作しているために、データの読み出しに多くの時間が掛かるようになり、アクセス速度の低下として見える事もよく在ります。ですので、テストでは主にこの第二段階と第三段階の状態でのソフトのエラー処理の動作を準正常系のテストで確認します。

二次記憶の劣化テストはどうやって実施する

フラッシュメモリやHDDなどの二次記録装置が劣化した状態でのエラー処理の動作を確認するために、準正常系のテストが必要なのですが、組み込みソフトから見るとこれはハードウエアエラーが発生している時のテストに相当するので、実施が難しいです。テストを実行するためには、実際にフラッシュメモリやHDDからの応答時間を延ばしたり、読み出しコマンドに対して読み出しエラー応答を返したり、書き込みコマンドに対して書き込み失敗応答を返したりする工夫が必要になります。

フラッシュメモリやHDDのメーカならば、そのような異常動作をシミュレートする試験装置や、テスト専用にエラー応答を返すような特殊なファームウエアを組み込んだフラッシュメモリやHDDを準備するという手もあります。しかし、普通の組み込みソフトの開発会社ではそこまでの準備は難しい事が多いです。

ではどうするかというと、話は簡単でフラッシュメモリやHDDを痛めつけて壊れる寸前まで持っていけば良いのです。フラッシュメモリもHDDも、記憶媒体は温度に弱いので60度とか70度で何日間か読み書きを繰り返していれば、そのうちに記憶素子がヘタってきて劣化が起き始めます。適当な劣化の進行具合になったら、そのフラッシュメモリやHDDを二次記憶装置の劣化試験用の道具として使いましょう、というやり方です。余り正確な劣化状況は作れませんが、実際のフラッシュメモリやHDDが劣化した時の挙動そのものが発生できるので、組み込みソフトのテストとしては十分に効果があります。

二次記憶の劣化のテストの次ぎは高負荷エージングテストです

フラッシュメモリやHDDなどの二次記憶装置の大容量・高密度化によって、実際の運用場面で劣化が起きる可能性が高まってきたので、それに対応するための準正常系処理のテストについてこの記事で紹介しました。組み込みソフトの安定稼働には様々な準正常系の動作確認が必要になります、次の記事では高負荷エージングによる準正常系のテストについて紹介しましょう。