2014年11月に開催した日経BP社主催セミナー「半導体ストレージサミット2014~エンタープライズ分野の主役に躍り出たフラッシュメモリー~」から、中央大学理工学部電気電子情報通信工学科教授の竹内健氏の講演を、日経BP半導体リサーチがまとめた。最終回となる今回はフラッシュの課題を解決するソフトウエア技術を解説する。(日経BP半導体リサーチ)

 続いて、フラッシュの課題をソフトウエアで解決する研究について話したい。SSDは大きく、フラッシュメモリーとそれを制御するコントローラーで構成される。ここで取り上げるのは、このフラッシュのコントローラーとSQLのストレージエンジンをうまく協調させた例だ。

 それともう1つ、一般的なアプリケーションはOSとともに動く。だが、OSは非常に巨大かつ複雑なシステムであるため、我々はそこではなくアプリケーションとOSとの間にあるミドルウエアに手を加えて、OSから送られてくるデータのアドレスを、SSDのコントローラーがうまく協調できるように変更、スクランブルするシステムを開発した。

出典:中央大学教授 竹内健氏の講演資料(以下同)
[画像のクリックで拡大表示]

 具体的に言うと、フラッシュには1つのブロックの中に有効ページと無効ページができ、それがブレンドされてしまうという問題がある。無効ページが生じるのはフラッシュの宿命であり、これは変えられない。そこで、有効なものと無効なものをそれぞれ集めるようにして、ガベージコレクションを高速化することを考えた。

[画像のクリックで拡大表示]

 OSあるいはSQLのストレージエンジンは、通常は早い番地からデータを書いていくが、ヒント情報として「ここに上書きしてください」という情報を出して、そこのアドレスを発行する。これにより、その領域をすべて無効化し、高速化を実現した。バラバラになっていた有効/無効ページの中から無効ページをかき集めると、そのブロックには有効なページがないため、消去することでフリースペースを作れるのである。