フラッシュメモリーのウェアレベリング
最終更新日 
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 (2月5日迄) DELL ・今週のおすすめ製品 対象製品が最大15%OFFでお買い得 (キャンペーン実施中) パソコン工房 ・パソコン大売出しSALE 対象BTOパソコン最大40,000円OFF (2月18日迄)  | 
  

