2017/09123456789101112131415161718192021222324252627282930312017/11
【SSDのデータ構造について】

今回はSSDのデータ構造について書きます。


【SSDのデータ領域について】
SSDのデータ領域
SSDはHDDの様に回転するプラッタに磁気で記憶するのでは
なく、記憶素子にNAND型フラッシュメモリを使用しています。

記憶領域は画像の様に一定データ量毎にブロックで区切られ
ており、ブロック単位でデータを格納する様になっています。



【データの格納単位】
前に【フラッシュメモリとは】でフラッシュメモリの記憶素子に
ついて説明していますが、NAND型フラッシュメモリは構造上
1素子(セル)単位でデータを格納できません。

理由を理解するためにはブロック内部の構造を理解する必要
があるので詳細を書きます。



【ブロック内部の記憶素子の構造】
SSDのデータ領域(ブロック内部)

これはブロック内部の構造を表したものです。

記憶素子間略図
↑の画像は簡略表記した1素子(セル)になります。

ブロック内部は16個以上の素子を数珠繋ぎにしたものを16本
以上並べ、をれに交差する様に制御ゲート用の配線をしてい
る為、複数の素子を一度に書き込みをする事になり1素子単
位でデータを格納出来ない訳です。



【書き込み読み込みの詳細】
SSDのデータ領域(書き込みと読み込み)
フラッシュメモリとは】で書き込みについて説明してあります
が、ソースとドレインさらに制御ゲートに電圧をかける事でフロ
ーティングゲートに電子を押し込んで書き込むわけですが、

画像の様な構造上、書き込み方は制御ゲートの配線で横一
列に繋いだ記憶素子を一度に書き換えることになります。

この最小書き換え単位ページと呼びます。

画像は数珠繋ぎのbit lineを並べた数だけ一度に書き換えて
いる事になります。

画像のページ内のデータを左から5本目まで表すと、00101
書き込んでいると言う事を表しています。

尚、読み込みについてもページ単位で行われます。



【書き換えと消去】
SSDのデータ領域(消去)
NAND型フラッシュメモリは電子入れるか出す事でデータを
識別しているのと書き込みの仕様上、効率が悪い為一部を
き換えたり上書きする事が出来ません


その為、bit linとWord lineで接続されたブロック単位で一度
記憶素子からすべて電子を抜いた状態にしてから改めて入れ
直すという事をやっています。

尚、ちょっとデータが変わるだけでもブロック内の全データが
書き直しになる
為、劣化が早まるという問題があります。



【書き換えの仕様で起きる問題】
【データの書き込み速度が極端に落ちる】

上記した様にブロック単位でデータを消去して書き換えている
訳ですが、

空きブロックがある内は同じ場所を頻繁に使用しない様にデ
ータを別ブロックに振り分けているので0からの書き込み速度
を保てます。

しかし、空きブロックをすべて使用した時点で書き換えが発生
する
様になる為、元データを消去する作業が加わって書き込
み速度が遅くなります。

一定期間使用していると、急に書き込み速度が遅くなるのは
上記の仕様が原因です。

一応OS上から開きブロックの認識になっている場所のデータ
をバックグラウンドで定期的に削除するTrimという機能はあり
ますが、

間違ってOS上でデータを消した場合復元が不可能になる可
能性もあるので注意が必要です。


【データがブロック単位で消失する】
データを書き換える時にエラーが発生した場合、ブロック単位
で消去しているので、ブロック全体のデータが消失してしまい
ます。

また、最近のSSDはキャッシュ(一時的にデータを保存する記
憶装置)にも不揮発性のフラッシュメモリを使用して突然の電
源断でデータが消失しない様にしていますが、

キャッシュに揮発性のメモリを使用している場合電源断でブロ
ック単位でデータが消失する事もあります。



【アロケーションユニットサイズ】
SSDの場合HDDと違ってページ最小書き込み容量がデフォ
ルトの値になります。

一応フォーマットにページの未満のサイズはありますが、仮想
的に小容量でデータを格納しようとする為、書き換えが発生し
やすくなるのでデフォルトよりも容量を少なくするのは止めた方
が良いでしょう。

尚、上記した様にブロック単位で書き換えをする仕様なので、
ブロック毎の容量に近づけると効率が良くなると思われます。
(但しファームでデフォルトサイズに最適化されている場合は
除く)



【フォーマット時の注意】
ストレージ(HDD,SSD)の増設の仕方】でも注意していますが、
NAND型フラッシュメモリの記憶素子デフォルトの値は1(MLC
だと11)です。

だから、フルフォーマット(0で領域をすべて埋める)をしてしまう
と全ブロックがはじめから埋まってしまうので、

クイックフォーマットチェックを外してはいけません

初期導入時は注意してください。



このBlogはBlogランキングに参加しています。
役に立ったと思った方はクリックをお願いします。




総合情報に戻る

TOPに戻る
この記事へのコメント:
コメント:を投稿する
URL:
コメント:
パスワード:
非公開コメント: 管理者にだけ表示を許可する
 
この記事のトラックバック URL
https://pcnomori.blog.fc2.com/tb.php/230-8b95bbaf
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック:
成長因子