フラッシュメモリーのウェアレベリング
最終更新日
2023年09月17日
フラッシュメモリーのウェアレベリングとは
基礎
フラッシュメモリーのウェアレベリングとは、フラッシュメモリーの論理的な場所全体にデータ書き込みが不均等に分散している場合でも、フラッシュメモリーの物理的な場所全体にデータ書き換え回数を分散させる方法です。ウェアレベリングの例
フラッシュメモリーではデータを書き換える場合、データを消去してから書き込む必要があります。データ読み書きはページ単位で行えますが、データ消去はブロック単位で行えます。そのため、ブロックのデータを1ビットでも書き換える場合、ブロックのデータを制御チップの作業用メモリーにコピーし、作業用メモリーでデータを書き換え、作業用メモリーのデータを別のブロックにコピーします。元のブロックのデータは消去します。制御チップではブロック単位でデータ書き換え回数を管理しています。ウェアレベリングでは、作業用メモリーのデータをどのブロックにコピーするか選びますが、データ書き換え回数が少ないブロックを選びます。これによりブロックのデータ書き換え回数を全体的に平準化できます。
1 |
7 |
2 |
4 A |
→ | 2 D’ |
7 |
2 |
4 A |
---|---|---|---|---|---|---|---|---|
1 B |
3 |
4 C |
2 |
1 B |
3 |
4 C |
2 |
|
2 |
2 D |
1 E |
3 F |
2 |
2 |
1 E |
3 F |
|
6 |
4 |
2 G |
3 |
6 |
4 |
2 G |
3 |
例えばブロックが16個あるとします。水色のブロックはデータが書き込まれていない未使用ブロック、紫色のブロックはデータが書き込まれている使用中ブロックです。各ブロックの左上の数字はデータ書き換え回数、左下のアルファベットはブロックを識別するために付けています。
上から3番目、左から2番目の位置にあるブロックDのデータを書き換えるとします。書き換え後のデータは、上から1番目、左から1番目のブロックがデータ書き換え回数1回と少ないので、このブロックにコピーします。
制御チップによっては、データ書き換え回数が少ないブロックのデータを、多いブロックに移動させます。前者のブロックにあるデータは今後もデータ書き換え対象になる可能性が低いと判断します。これにより他のブロックと比べてデータ書き換え回数が少ないブロックが存在することを防ぎます。
1 |
7 |
2 |
4 A |
→ | 1 |
8 B |
2 |
4 A |
---|---|---|---|---|---|---|---|---|
1 B |
3 |
4 C |
2 |
1 |
3 |
4 C |
2 |
|
2 |
2 D |
1 E |
3 F |
2 |
2 D |
1 E |
3 F |
|
6 |
4 |
2 G |
3 |
6 |
4 |
2 G |
3 |
上から2番目、左から1番目のブロックBはデータ書き換え回数が1回と少ないです。ブロックBのデータを、上から1番目、左から2番目のブロックにコピーします。新たなブロックBはデータ書き換え回数が7回から8回になりますが、8回のままが続き、元ブロックBのデータ書き換え回数が増える可能性があります。
出典
・なぜ消えるのか、劣化するのか(6ページ目) | 日経クロステック(xTECH)(2009/11/19公開記事)
キャンペーン情報(PR) |
---|
マウスコンピューター
・オータムセール 最大50,000円OFF (10月9日迄) DELL ・今週のおすすめ製品 対象製品が特別価格でお買い得 (キャンペーン実施中) パソコン工房 ・決算セール セール対象BTOパソコン最大55,000円OFF (10月1日迄) |