ウェアレベリング
出典: フリー百科事典『ウィキペディア(Wikipedia)』
ウェアレベリング (wear levelling)とは、コンピュータの記憶媒体に用いられる技術の一つ。書き換えることができる回数が限られている媒体において、その使用寿命を延ばすための手法。wear levellingを日本語訳すると「摩耗平滑化」といった意味になるが、日本語では英語をそのままカタカナにして「ウェアレベリング」と呼ばれる事が多い。
目次 |
[編集] 概要
コンピュータの記憶媒体には、保持データを書き換えると少しずつ劣化してゆくというものがいくつかある。電源を切っても内容が保持される媒体においてそれは顕著で、CD-RW、DVD+RW、フラッシュメモリなど、書き換え可能回数が数百から数千回程度のものが近年では多用されてきている。
一般的に、これらの記憶媒体の書き換え限度回数は、媒体全体に対しての回数ではなく、記憶素子一つに対しての回数である。このことより、書き換えが一つの素子に集中せず、一個の媒体中の各素子にできるだけ均等に分散するように制御ができれば、媒体全体としての書き換え限度回数は飛躍的に向上する事になる。
この、データの書き換えを媒体中の記憶素子にできるだけ均等に分散させる技術の事を、ウェアレベリングと呼ぶ。ウェアレベリングの技術を用いる事により、媒体としての書き換え限度回数は各素子の書き換え限度回数の数百から数千倍になる。
[編集] 技術の具体例
ウェアレベリングを実現する技術はいくつもあるが、大きく分けると、記憶媒体のモジュール内のハードウェアを工夫する事によるアプローチと、記憶媒体への読み書きフォーマット(ファイルシステム)を工夫するソフトウェア上のアプローチの2つになる。
[編集] ハードウェアの工夫
読み書きをしようとする記憶素子をCPUなどが指定する場合に、その指定されたアドレスを直接用いるのではなく、アドレスの変換テーブルなどを用いる事によって実際にアクセスされる記憶素子を間接指定する仕掛けをハードウェアで実現しておく。記憶媒体への書き込みを行なう際には、このアドレス変換テーブルの値を調整する事により、まだあまり書き換え回数が多くない素子に実際の書き換え操作が発生するようにする。
この技術が有効なのは、CDなどのような、記録媒体だけが個別に販売されるようなものではなく、コンパクトフラッシュのような、記憶素子へのアクセス制御回路がセットになった状態で取り扱われるものにおいてである。特に、デジタルカメラなどの記憶媒体として近年多用されているNAND型フラッシュメモリを使った媒体では、この技術がほぼ標準的に用いられている。
[編集] ソフトウェアの工夫
コンピュータシステムが補助記憶装置にデータを保管する際には、ファイルと呼ばれる単位で読み書きをすることが圧倒的に多い。この際、「どのファイルが媒体のどの位置に格納されているのか」という情報を管理する機構の事をファイルシステムと呼ぶ。このファイルシステムの構成を工夫する事により、ウェアレベリングを実現する事ができる。
書き換え回数制限がほぼ無いに等しい一般的なハードディスクを前提としたファイルシステムの場合、あるファイルが使用する記憶素子は一度割り当てられると変更される事が無いため、書き換え頻度が高いファイル(動作の履歴を書き込むファイル等)に割り当てられた記憶素子に書き換えが集中してしまう。これに対し、ウェアレベリングに対応したファイルシステムでは、書き込みの度に使用する記憶素子を次々と取り替え、書き換えが同じ素子に集中しないように制御される。
また、ファイルシステムの管理情報、すなわちファイル本体が媒体中のどこにあるかを示すデータや媒体中の未使用の領域がどこであるかを示すデータは、最も書き換え頻度が高くなるので、この情報が一カ所に集中しないように制御する工夫も必要になる。場合によっては、管理情報だけは書き換え回数制限が無い別の媒体に保存するという手法がとられることもある。
NAND型フラッシュメモリのように、1バイト単位での書き換えができなくて、書き換えはある程度まとまったブロック単位で行なわれるという素子を用いる場合、ファイルシステムのほうでそれを考慮し、ファイルのうち書き換えが必要な部分だけを一つのブロックにまとめるという操作をすることもある。
組み込み機器の世界でよく用いられているJFFSまたはその派生版のJFFS2というファイルシステムは、ウェアレベリングに対応したファイルシステムの代表格である。(JFFSは上記NAND型フラッシュメモリに対応する機構は含まれていない。)
[編集] 関連項目
- ファイルシステム
- NAND型フラッシュメモリ
- JFFS2