日経エレクトロニクスの2008年4月21日号に極めて興味深い記事が掲載されていた。
「東芝の勝算」という全体の特集もおもしろいのだが、その中でも時に「SSDの将来像」という特集がおもしろい。
今、東芝ほど日本の基幹産業を背負っている企業もいない。東芝は「NANDフラッシュメモリ」、「半導体・LSI」というハイテク産業の基幹部分にものすごい額の投資を行っている。その額は2007年度から2009年度の3年間でおよそ1兆円。特に、東芝における「NANDフラッシュメモリ」への投資額は、韓国サムソン社をもしのぎ、2009年には、世界シェアトップを目指している。しかし、最近のNANDフラッシュメモリの価格下落で利益率は厳しい。営業利益率は下降し続け、ついに2008年度第1四半期では、営業利益31億円というあわや赤字転落のところまで行った。
このような状況で、今後の世界のNANDフラッシュメモリ事業の命運を握るのが、最近MacBook Airなどの超薄型ノートパソコンに搭載されはじめたSSD(Solid State Drive)である。SSDはその中身に複数のNANDフラッシュメモリを並列で利用している。現在はその割高な価格のため、
- MacBook Air
- Thinkpad X300
- 一部の高級VAIO
くらいにしか搭載されていないSSDだが、今後価格が普及可能レベルまで下がるタイミングでノートパソコンのHDDを一気にSSDに置き換えることが出来るかどうかが、NANDフラッシュメモリの命運を握っている。
MacBook AirのSSDモデルでアプリケーションの実行性能が出なかった事件
MacBook AirがHDDモデルとSSDモデルであまりアプリケーションの性能に違いがなかった(HDD性能だけで見た場合、ランダムアクセスで40%程度早く、シーケンシャルアクセスでは遅い)という記事は記憶に新しい。
技術系情報サイト『Ars Technica』が、MacBook Airのベンチマークテストを実施してくれたからだ。この結果によると、ランダムなデータ読み取りと書き込みを除いて、SSDと通常のハードディスクにはほとんど違いがなく、それどころか、SSD搭載モデルはシーケンシャルな書き込みと読み取りでは性能が劣るという[ランダムなデータ読み取りと書き込みでは、40%の向上が見られる。特に読み取りは速い]。
一方、Thinkpad X300において、64GのSSDは2.5インチ5400rpmのHDDと比較してベンチマークで3倍以上の性能差をたたき出した。(ソースが自分が行ってきたブロガー発表会っていうのがあれですが(笑い))
どうして、このように同じSSDを使っていながらMacBook AirとThinkpad X300でここまで性能が違うのか。その辺りの技術的背景がなんとなくつかめたのでまとめてみたい。
圧倒的な基本性能を持つSSD
まず、SSDのHDDと比較したときの技術的優位性を簡単にまとめておくと、以下のようになる。
- NANDフラッシュメモリの微細化により、一つのSSDに複数のフラッシュメモリを搭載できるため、処理を並列化して高速化できる。これは簡単にいうと、HDDにおけるRAID0をひとつのパッケージのなかでおこなっているようなものである。フラッシュメモリの微細化、半導体の性能上昇に伴い、SSDの性能が上昇するため、今後、ムーアの法則のようにある程度までは劇的に性能が上昇する余地がある。(HDDの回転速度を今より上げるのはかなり難しい。)
- ヘッダのシーク時間が存在しないためランダムアクセスが早い。性能差でいうとランダムアクセスはSSDの方が10倍以上早い。
- 回転機構がないため低電力。故障もしにくい。
これだけ見ると夢のような機構である。ただ、SSDにはその規格的にHDDと比較して不利な点がいくつかある。その中でも代表的なものが、ブロックコピーが頻発することである。
SSDの大きな欠点: ブロックコピーの頻発
SSDはその機構上、ブロックと呼ばれるデータの取り扱いの単位を512K〜1Mくらいのサイズで扱っている。つまり、データを消す時は、512K〜1Mバイト単位でデータを消去する必要が生まれる。ところが、現在の普通のOSが取り扱うブロックサイズは512から4Kバイト程度である。(ほとんどはHDDの最小サイズである512バイトに合わせている)
よって、OSが512バイト単位の細かいファイルの消去を要求した場合、SSDは、
- 消去する必要のないファイルを他のブロックに待避(NANDフラッシュ・メモリの読み出し、フラッシュ・メモリからコントローラへのデータ出力、コントローラ側での誤り訂正、フラッシュ・メモリへの書き込みというたくさんの動作が必要)
- 該当するデータをブロックごと消去
という行為を行う必要が出てくる。この動作はワーストケースでなんと100msec程度の遅延が発生する可能性がある。一度、リアルタイムなプログラミングを書いた人ならわかると思うが、100msecのストールはリアルタイムなシステムではかなり致命的である。また、この長さのストールはユーザにとっても体感できてしまうためシステムのレスポンスが悪いと感じる原因にもなる。ここのあたりの問題点は各社しっかり把握できているので、たとえばSSDのコントローラ側で処理をパイプライン化するといった実装上のテクニックを使ってストールを隠蔽する機構の開発が進んでいる。
SSDの性能を引き出すにはOSの最適化が必要
だが、上のブロックコピーの問題を根本的に解決するためにはOS側である程度SSD向けの最適化を行う方がよい。今後、SSDの内に格納されるNANDフラッシュメモリ数が増えるにつれて、SSD内の処理の並列化がすすむと、あまりSSD内のコントローラをパイプライン化して複雑にするより、OS側からのデータの転送の頻度を減らし、セクタサイズ自体をSSDに適したものに変更する方が効率的である。
ここでやっと冒頭につながるのだが、MacBook Airの性能があまり出なかったのは、この辺りのOS的なサポートに関係しているのではないかと思われる。
MacOS XのファイルシステムであるHFS+、WindowsのファイルシステムであるNTFSはともにブロック単位が512バイトでそのサイズに差異はない。だがWindowsにはこのSSDの性能を引き出すためにOSと低レベルドライバの中間に位置し、書き出しのブロックサイズを大きくし、さらに書き込み自体の回数を減らす「Enhanced Write Filter」という機構が存在していた。さらにWindows Vistaはブロック自体を4Kバイト単位で扱うLong Block Data sector standardをサポートしている。このあたりのOSのサポートの差がThinkpad X300とMacBook AirのSSDにおける性能差につながっているのではないかと思われる。
まとめ
技術的優位性からみても、今後SSDがモバイル端末においてHDDの代わりとなっていくのは間違いない。また、その故障率の低さから、サーバのディスクレスソリューションの一つとしても期待されている。将来的にはOSもSSD向けの機構をサポートすることで、HDDでは到達出来なかった性能を引き出すようになっていくと思われる(おもしろくもなんともない結論だけど)。
[追記] MacOSXでWindowsのような機構があるのか探したのですが見つけることが出来ませんでした。もし、MacOSXにも同じような機構があることをご存じの方はトラックバック、コメントなどで教えていただけると幸いです。しかし上の理由だとMacBook AirのHDDの読み込みが激速じゃないことの理由にならないな。うーん、まさかOSのドライバのところで速度を絞っているなんてことはないよなー。
[さらに追記] コメントで「no name」さんからMacBookAirのSSDはIDE接続であると教えていただきました。Thinkpad X300はSATA2接続なので、OSよりもこのコントローラ部分の差の影響が大きそうです。