読者です 読者をやめる 読者になる 読者になる

FutureInsight.info

AI、ビッグデータ、ライフサイエンス、テクノロジービッグプレイヤーの動向、これからの働き方などの「未来」に注目して考察するブログです。

SSDのハードウェア的未来とソフトウェア的対応のまとめ

SSDがそろそろ高速なIOを必要とするサーバやノンスピンドルが必要とされるノートPCの分野でメインストリームに入りそうな勢いを感じます。僕が使っているEeePC S101もSSDですし、最近僕の周りでノートPCを購入する人の半分はネットブックが安いということもありSSDを採用したノートPCを選んでいます。SSDがPCのメインストレージになったとき、どのような変化が起きるかをまとめておく必要がありそうな感じです。
最近のSSDトピックとしてはPFIの全文検索エンジンSedueがSSD向けに最適化した例が有名でしょう。

また、奥一穂さんの一連のエントリーも見逃せないでしょう。

この辺りのWebの検索技術にSSDを取り入れる動きはもうだいぶ活発化しており、今週の日経エレクトロニクス(2009/04/20号)では中国最大の検索エンジン「百度」がWeb検索サーバの100%をSSDに切り替えた以下のような事例が紹介されています。

「検索サーバー全体の数十%、Web検索サーバー機能に限定すると100%をSSDに切り替えた」(ハイドゥ マーケティング部 部長の添田武人氏)
「検索エンジンで取り扱うデータ量が非常に増えてきた。単位時間に処理すべきデータ量がものすごい勢いで増加している。今後もその流れはとどまりそうにない」(同上)
「こうした規模の拡大という考え方が将来的にもベストか。そう考えると、装置あたりの入出力性能がHDDの数十倍と速いSSDは、非常に魅力的な選択肢だった」(同上)

この日経エレクトロニクス(2009/04/20号)のSSDが非常に刺激的な内容でしたので、この内容を発端として、SSDのハードウェアの特性とそれに相対するソフトウェア(主にOS)という側面からSSDの現状をまとめてみたいと思います。

SSDのハードウェア的未来の説明 from 日経エレクトロニクス(2009/04/20号)

まず、SSDがどの程度のスピードで一般ユーザのメインストレージとして普及するかを考えましょう。日経エレクトロニクスに掲載されていた現在の進歩が続くと仮定した未来予測では、2010年3月くらい、つまり来年の春モデルくらいに100GのSSDが75ドルとなり、HDDとそこまでかわらない価格帯となります。個人的にはノートパソコンの容量としては100Gくらいが一般ユーザが音楽、映像を扱ってもそこまで困らないラインだと考えているので、来年3月くらいからSSDが通常で、HDDという選択はどうしても大容量のデータを扱いたいユーザがオプショナルな選択として選ぶものになってくるでしょう。2011年3月には200GのSSDが75ドルで購入可能となり、ここまでくるとHDDを採用する理由がかなり限定的になると思います。技術的にここまでのSSDの進化はすでに目処がついているので、ここまでは確定と考えて良いでしょう。
ただ、SSDの大容量化には大きな問題があります。それはチップの積層化、微細化がすすむことで耐久性、信頼性が著しく低下するという点です。
現在、生産されている50nm世代の耐久性は書き換えがおよそ2万回かのうですが、これが2010年にかけて生産がはじまる30nm世代になるとおよそ書き換え可能回数がだいたい3000回程度になります。このあたりはHDDと全くことなるハードウェア特性で、書き換え可能回数3000回というのは通常使用でおよそ1-2年くらいしかデータを保持できなくなることを意味します。よって、サーバのような基幹技術部分ではこのSSDの微細化が進んだ大容量SSDのメリットを活かすことができず、引き続き耐久性の高い現在の微細化がすすんでいないモデルを利用することになるのではないかと考えられています。この辺りの予測はほぼ既定路線として日経エレクトロニクスに紹介されており、最終的にはサーバには微細化が進んでいないSSD、PC用には耐久性と微細化のちょうどいいポイントのSSD、小型で高速なストレージが必要とされる分野では微細化された大容量SSDと用途別に様々なSSDが登場してくると考えられています。

ソフトウェア(主にOS)はSSDとどのように付き合うか

Windows 7でSSDに対して取り組まれる内容に関してはWindows 7開発者のblogで紹介されているWinHECのSSDセッションの内容が詳しいでしょう。

資料をざっと読む限り、以下のような点が上げられます。

  • SSDは、HDDと明確に特別されSSDとして認識されます。
  • NTFSのパーティションのアライメントをSSDのページサイズに可能な限り合わせます。この件に関しては(以前のエントリを参照してください。)
  • デリート処理を行う際は、可能限り処理をマージしてブロック単位でデリートを行います。
  • 高速な書き込みを活かすために、ガーベイジコレクションを走らせるタイミングを速くします。(ここはよくわかりませんでした)
  • 可能な限りデバイスの使用していないエリアを維持するようにします。

また、SSDだとOSが認識した場合、デフラグ処理を可能な限り行わないようにして、寿命を延ばそうとするそうです。
Linuxに関してもだんだんSSD関連のコードが入ってきているようです。Linuxの最新トレンドに関しては、Linux Kernel Watchが非常に頼りになります。

最近のATAコマンドでは、接続先デバイスがSSDかどうかの情報を取得できるようになっており、それに対応した改善が入りました。
1点目は、シークを削減するために入っていたI/Oスケジューラ(注6)です。これはリクエストを受け取ってもすぐさまI/Oを発行せず、しばらく後続I/Oを待つことがあります。しかし、デバイスがNon-rotating mediaだった場合(注7)は、この待ち処理をスキップし、レイテンシを改善しています。
2点目は、以前紹介したセクタ破棄リクエストによるウェアレベリングの改善であり、SSDの長寿命化に一役買っています。
面白いと思ったのは、Windows 7ではSSD対応に際して、(プレス発表によれば)「SSDを、HDDではない別のストレージデバイスとして認識する」という仕様を選び、一方Linux は、HDDとして認識するけれども内部的な動作が変わるようになっているということです。
筆者はLinux方式の方がスマートで好きですね。/dev/sdXという名前が変わってしまうと非互換になるので面倒ですし……。

まぁ、ここまでくるとLinuxもWindowsもSSDを意識せざるをえなくなっており、それはおもにSSDのHDDよりも大きいページサイズと、上記のSSDの寿命問題に関係していることは覚えておいて損はないと思います。

まとめ

SSDのハードウェア的未来とそれにソフトウェア(主にOS)がどのように取り組んでいるかをまとめてみました。SSDの課題として注目すべき点は主に、「SSDのHDDよりも大きいページサイズ」と「SSDの寿命問題」の二つに集約できるかと思います。他にSSDに巨大キャッシュをつけて書き込み回数を大幅に減らす試みや、EECを超強力にして、ハードウェアにある程度寿命がきても無理矢理動かすという技術が現在研究されているようです。SSDはCPUのメニーコア化とならぶ今後確実に起きる変化なので、今後も情報をチェックしていきたいと思います。