データの記録媒体として急速に存在感が高まっているのがフラッシュメモリー。フラッシュメモリーを内蔵する代表的な製品としては、パソコン間でデータをやり取りするUSBメモリー、デジタルカメラで使うメモリーカード、携帯音楽プレーヤーなどがある。ハードディスクの代わりとしてフラッシュメモリーを使ったSSD(solid state drive)を搭載するパソコンも増えている(図1)。【フラッシュメモリーにデータを記録する機器が増えている】

図1 フラッシュメモリーとは電源を落としても情報を保持できる半導体チップのこと。USBメモリーやメモリーカード、携帯音楽プレーヤー、SSDなどフラッシュメモリーにデータを記録する機器が増えている
フラッシュメモリーの半導体チップは、パソコンのメインメモリーに使われるDRAMと見た目は似ているものの、機能は大きく異なる。パソコンのメインメモリーは電源を落とすとデータが消えてしまうが、フラッシュメモリーは電源を切った後もデータを保持できる。
ハードディスクは機械の駆動部品を使うが、フラッシュメモリーは半導体チップの働きだけでデータを記録する。そのためハードディスクよりも衝撃に強いという特徴がある。USBメモリーをパソコンに挿したまま机にぶつけて端子が折れた、メモリーカードを折り曲げてしまったというような、明らかな破損でない限り、故障するケースは少ない。
データを保持する仕組み
そうはいっても、フラッシュメモリーは永遠にデータを記録できる”万能の器”ではない。メモリー内部では電気的な方法でデータを保持しているが、そのデータは永遠に保持することはできず、5年から10年も放置すると消える可能性がある。さらに何度もデータ記録を繰り返すと劣化するという特性もある。
書き込んだはずのデータがなぜ消えてしまうのか。その謎を解き明かすために、まずフラッシュメモリー内部の仕組みを見ていこう。
フラッシュメモリーの内部で1ビットを記録するセル(素子)を拡大して見ると、中央部分に、絶縁体で囲まれた浮遊ゲートという小部屋がある(図2)。この小部屋の中に電子を出し入れすることで、データを記録しているのである。【絶縁体で区切られた部屋の中に電子を入れてデータを記録】

図2 1ビットのデータを記録するセルを横から見た断面図。絶縁体で区切られた「浮遊ゲート」に、電子を引き込んだ状態を「0」、電子がない状態を「1」としてデータを記録する。長期間放置すると内部の電子が逃げ出してエラーの要因となる。読み書きを読み書きを繰り返すと絶縁体が劣化し、エラーとなる場合もある
電子をためる際には、上の制御ゲートに20V程度の電圧をかける。そうすると、下の半導体部分から電子が集まり、浮遊ゲートの内部に入っていく。通常、電子は絶縁体を通り抜けることはできないが、高いエネルギーをかけると、一定の確率で絶縁体をすり抜ける。これは物理学の用語でトンネル効果と呼ばれている。
浮遊ゲートの中に電子が入っている状態を「0」、電子が入っていない状態を「1」として、複数のセルに情報を記録する。
データ記録の仕組みが見えてきたところで、データ消失の核心に迫ろう。フラッシュメモリーのデータが消えてしまう理由は、浮遊ゲート内にためていたはずの電子が逃げ出してしまうから。データを書き込む際には、高い電圧をかけ、そのエネルギーで電子をすり抜けさせる。これを何度も繰り返すと、電子を閉じ込めておく壁としての性能が落ちて、電子がすり抜けやすくなる。
約5年で消失
いくら精密に作られたモノでもいつかは壊れる。それは理解できるが、簡単にデータが消えてしまっては困る。実際のところ、フラッシュメモリーの寿命はどの程度なのか。
フラッシュメモリーの寿命を語る上で、把握しておきたいのがフラッシュメモリーの種類。浮遊ゲート内の電子の有無で0か1を判断する「SLC(single level cell)」と、浮遊ゲート内の電子の量で2ビット以上のデータを表す「MLC(multi level cell)」の2つがある(図3)。【1セル当たりの情報量を2ビットに増やしたMLC】

図3 SLCは浮遊ゲートの中の電子の有無で0か1を判断する。MLCでは、1セルで2ビット、すなわち電子の量によって4段階を記録できるようにしている。将来は3ビット、つまり電子の量で8段階を記録する方式も登場するといわれている
MLCの方が、低コストで大容量化しやすい。そのため「SLCは主に産業用途向け。個人向け製品では9割がMLCのフラッシュメモリーを採用している」(業務用フラッシュメモリーを開発・製造しているイノディスク・ジャパン)という傾向がある。
寿命の指標となる数値は「書き換え可能回数」と「データ保持期間」の2つ。SLCでは、書き換え可能回数が10万回程度。データ保持期間が10年程度。これに対して、MLCは書き換え可能回数が3000~1万回程度、データ保持期間は5年程度とSLCよりも短い(図4)。何もせずに机の中に入れておくだけで5年後にはデータが消えていた、という事態が起こり得るということだ。【MLCの方が書き換え可能回数やデータ保持期間が短い】

図4 わずかな電子量の差によってデータの値を区別するMLCは、絶縁体の劣化による影響を受けやすい。そのため、SLCと比べて書き換え可能回数やデータ保持期間が大幅に少ない
MLCの寿命がSLCよりも短いのは、浮遊ゲートの中の電子の量の違いを細かく多段階に分けて記録するため。より高い精度が必要で、劣化の影響が出やすいのだ。例えば、電子が少し抜け出しただけで「00」と記録したはずが「10」と判断されてしまう可能性がある。
記録位置をずらし平準化
普段日常的に利用しているMLCのフラッシュメモリーが、たった3000回更新するだけでデータが消えてしまうとなれば、1日10回書き換えただけで、1年もたたずに寿命が来てしまう。それでは、さすがに安心して使うことができない。そこでフラッシュメモリーは、データの記録方法に、次のような工夫を加えることで書き換え回数の問題を解消している。
フラッシュメモリーは1ビットずつ読み書きするように配線すると回路が複雑になり、大容量化が難しくコストが掛かる。そこで回路の構造上、一定数のセルをまとめた「ブロック」と呼ばれる単位に分けてデータを記録している。
データの記録に同じブロックばかりを使っていては、すぐに寿命が来てしまう。そこで、ユーザーが新しいデータを書き込む際には、必ず利用回数の少ないブロックにデータを書き込む(図5)。上書きの場合は、同じブロックは使わず、一度ブロック全体を作業用メモリーに読み出し、内容を更新した上で、最も利用回数の少ないブロックに書き戻す。【書き換え回数の少ない場所に優先してデータ記録】

図5 フラッシュメモリーは、書き換えの頻度を平均化する機能を持っている。これを「ウエアレベリング」という
制御コントローラーによっては、あまり書き換えられていないデータを書き換え回数が多い場所に移動させる機能を持っている。このように、書き換え回数を平準化させる技術を「ウエアレベリング」という。
ウエアレベリングの実装によって、フラッシュメモリーのセル寿命は大幅に延びる。例えば、書き換え可能回数が5000回のフラッシュメモリーを搭載した4GBのメモリーカードがあったとする。
仮に、デジタルカメラで2MBの写真データの撮影と消去を繰り返したとしたら、4GB(4096MB)×5000回÷2MB=1024万枚となる。これだけの枚数が撮れるのであれば、書き換え可能回数はほとんど気にせず使えるといってよさそうだ。
ただ、書き換えによる劣化が経年変化による耐用年数にも影響を与えることに注意したい。SLCで10年程度、MLCで5年程度というデータ保持期間はあくまでも新品の場合の数値である。書き換え可能回数が3000回のフラッシュメモリーで「3000回近く書き換えていれば、データ保持期間は1年程度が目安と考えてほしい」(東芝)とメーカーは言う。
エラー訂正に頼る
フラッシュメモリーのメーカーは製造技術を進歩させることで、大容量化と耐久性の両立を目指している。例えば、東芝は従来32nmだったフラッシュメモリーの製造プロセスを2010年後半に20nm台にまで微細化させることを目指す。現在米インテルの最新CPUが32nmのプロセス技術を使っているから、それよりも一歩先を進むことになる。20nmプロセスのフラッシュメモリーは書き換え可能回数が2000回になる見通しだったが「既存製品と同じ書き換え3000回を実現できるように開発を進めている」(東芝)。
これだけ精密で繊細な仕組みであれば、膨大な数のセルの中で、一部にエラーが生じても不思議はないが、実はさほど心配する必要はない。フラッシュメモリーは、エラーが発生しても、問題なく継続利用できる仕組みを備えているからだ。
エラーが発生した場合には、ハードディスクと同様にエラー訂正(ECC)の仕組みを使う。フラッシュメモリーにデータを書き込む際にはブロックをさらに細かく分割した「ページ」単位で記録する。1ページの容量は一般に512~1024バイト。このデータ本体とは別に、ページごとに修正用データ(符号)が記録されているのだ。
この修正用データの容量は徐々に増える傾向にあり、従来は1ページ当たりで修正できるエラーは1~4ビットだったが、最近の一部製品では10~24ビットのエラーがあっても修正できる。微細化による大容量化と低価格化を進めながら、一方では「エラー訂正の数を増やさないと、そこそこの品質を保てない」(イノディスク・ジャパン)というメーカーの製造上の苦労も見え隠れする。
エラーが多い場合はそのページの周辺は不良ブロックとみなして使用不可にする。さらに、スペア領域の代替ブロックをあてがう(図6)。このような仕組みがあるため、ユーザーとしては、エラーが起きたとしても、それに気付くことはなく、問題なく使い続けられる。【エラーが訂正できない場合はスペアのブロックに入れ替える】

図6 フラッシュメモリーには、記録内容に問題があっても、それを回避する機能がある。上記はその処理方法の一例。データを読み出す際に、フラッシュメモリーの制御コントローラーはエラー訂正(ECC)の機能で内容を確認する。エラーが一定値よりも多いか、訂正できない場合は、そのブロックを使用不可にして、以後はスペア領域を使う[画像のクリックで拡大表示]
そうはいっても、どんな製品でも安心して使えるとは限らない。「元々エラーの多いB級品のメモリーチップが流通していて、格安品の中にはそれを使った製品もあるようだ」(バッファロー)と警告する声もある。格安品のUSBメモリーやメモリーカードには、データ消失のリスクがあると認識しておく方がよさそうだ。
