Future Insight このページをアンテナに追加 RSSフィード Twitter

2008-04-19

SSDの未来: MacBook AirのSSDの性能が出なかった理由

日経エレクトロニクスの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フラッシュメモリを並列で利用している。現在はその割高な価格のため、

くらいにしか搭載されていないSSDだが、今後価格が普及可能レベルまで下がるタイミングでノートパソコンHDDを一気にSSDに置き換えることが出来るかどうかが、NANDフラッシュメモリの命運を握っている。

MacBook AirSSDモデルでアプリケーションの実行性能が出なかった事件

MacBook AirHDDモデルとSSDモデルであまりアプリケーションの性能に違いがなかった(HDD性能だけで見た場合、ランダムアクセスで40%程度早く、シーケンシャルアクセスでは遅い)という記事は記憶に新しい。

技術系情報サイト『Ars Technica』が、MacBook Airベンチマークテストを実施してくれたからだ。この結果によると、ランダムなデータ読み取りと書き込みを除いて、SSDと通常のハードディスクにはほとんど違いがなく、それどころか、SSD搭載モデルはシーケンシャルな書き込みと読み取りでは性能が劣るという[ランダムなデータ読み取りと書き込みでは、40%の向上が見られる。特に読み取りは速い]。

一方、Thinkpad X300において、64GのSSDは2.5インチ5400rpmのHDDと比較してベンチマークで3倍以上の性能差をたたき出した。(ソースが自分が行ってきたブロガー発表会っていうのがあれですが(笑い))

どうして、このように同じSSDを使っていながらMacBook AirThinkpad X300でここまで性能が違うのか。その辺りの技術的背景がなんとなくつかめたのでまとめてみたい。

圧倒的な基本性能を持つSSD

まず、SSDHDDと比較したときの技術的優位性を簡単にまとめておくと、以下のようになる。

  • NANDフラッシュメモリの微細化により、一つのSSDに複数のフラッシュメモリを搭載できるため、処理を並列化して高速化できる。これは簡単にいうと、HDDにおけるRAID0をひとつのパッケージのなかでおこなっているようなものである。フラッシュメモリの微細化、半導体の性能上昇に伴い、SSDの性能が上昇するため、今後、ムーアの法則のようにある程度までは劇的に性能が上昇する余地がある。(HDDの回転速度を今より上げるのはかなり難しい。)
  • ヘッダのシーク時間が存在しないためランダムアクセスが早い。性能差でいうとランダムアクセスSSDの方が10倍以上早い。
  • 回転機構がないため低電力。故障もしにくい。

これだけ見ると夢のような機構である。ただ、SSDにはその規格的にHDDと比較して不利な点がいくつかある。その中でも代表的なものが、ブロックコピーが頻発することである。

SSDの大きな欠点: ブロックコピーの頻発

SSDはその機構上、ブロックと呼ばれるデータの取り扱いの単位を512K〜1Mくらいのサイズで扱っている。つまり、データを消す時は、512K〜1Mバイト単位でデータを消去する必要が生まれる。ところが、現在の普通のOSが取り扱うブロックサイズは512から4Kバイト程度である。(ほとんどはHDDの最小サイズである512バイトに合わせている)

よって、OSが512バイト単位の細かいファイルの消去を要求した場合、SSDは、

  1. 消去する必要のないファイルを他のブロックに待避(NANDフラッシュ・メモリの読み出し、フラッシュ・メモリからコントローラへのデータ出力、コントローラ側での誤り訂正、フラッシュ・メモリへの書き込みというたくさんの動作が必要)
  2. 該当するデータをブロックごと消去

という行為を行う必要が出てくる。この動作はワーストケースでなんと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 X300MacBook AirSSDにおける性能差につながっているのではないかと思われる。

まとめ

技術的優位性からみても、今後SSDモバイル端末においてHDDの代わりとなっていくのは間違いない。また、その故障率の低さから、サーバディスクレスソリューションの一つとしても期待されている。将来的にはOSSSD向けの機構をサポートすることで、HDDでは到達出来なかった性能を引き出すようになっていくと思われる(おもしろくもなんともない結論だけど)。

[追記] MacOSXWindowsのような機構があるのか探したのですが見つけることが出来ませんでした。もし、MacOSXにも同じような機構があることをご存じの方はトラックバック、コメントなどで教えていただけると幸いです。しかし上の理由だとMacBook AirHDDの読み込みが激速じゃないことの理由にならないな。うーん、まさかOSドライバのところで速度を絞っているなんてことはないよなー。

[さらに追記] コメントで「no name」さんからMacBookAirのSSDIDE接続であると教えていただきました。Thinkpad X300はSATA2接続なので、OSよりもこのコントローラ部分の差の影響が大きそうです。

zakzak 2008/04/19 13:26 ブロックコピーの話は知りませんでした。そんなことやってたらそりゃあ遅くなるよな。。。
nilfsのように、基本的にファイルを消さないfsが最速として、あとは記事にもあったブロックサイズとかを工夫して利便性も考えましょうというところか。。

gamellagamella 2008/04/19 15:03 そうですね。あと、MacOSXにもWindowsのような機構があるかと思って探したんですが、それらしい記述はありませんでした。MacOSXはファイルシステムをZFSに切り替えようとしている過程なので、その過程でサポートしてくるかもしれませんね。

kfkf 2008/04/19 15:30 SSDは割高だから高級PCにしか入ってないという理由はちょっと違うんじゃないのかな。eee PCにもSSDが入ってるし。新しい技術を取り込む製品戦略や技術的な対応力の差が現れてるんじゃないでしょうか。

the48the48 2008/04/19 15:35 なるほど,そうするとeeepcでもwindows優位と・・

no nameno name 2008/04/19 17:34 横槍ですがEeePCのSSDはこれとは話が別じゃないでしょうか?
あっちは4GBしかNANDを積んでませんしその程度のNANDチップのコストは大幅に下がっています(SDカードなどの需要のおかげで。)
ですが、そういう普及価格帯のSSDには速度的メリットはまったくないです。(USBメモリがUSBのHDDより遅いのと同じ理由です)
なので、一般に言われるSSDは速度を上げるために、高速なNANDチップを使ったり、複数のNANDを並列で書き込めるようにしたりとコストのかかる製造方法をしてます。その差は大きいかと。
そういやMacBookAirのSSDはIDE接続でしたね・・・。その辺も影響?

gamellagamella 2008/04/19 18:37 > EeePCのSSD

たしかに4GだとNANDフラッシュを並列にしていない可能性がありますね。それだと普通のHDDと速度はかわりません。むしろ負けるかも。

> そういやMacBookAirのSSDはIDE接続でしたね・・・。その辺も影響?
MacBookAirのSSDはIDE接続なんですか!
Thinkpad X300はSATA2なので、この速度差はでかそうですね。そこが原因かなー。

no nameno name 2008/04/19 21:33 >WindowsのファイルシステムであるNTDS
これはNTFSではないのですか?
細かい所で申し訳ないですが。。。

gamellagamella 2008/04/20 13:08 すんません。修正しました。

ojiadojiad 2008/10/19 01:22 Macbook Airに搭載されたSSDは、SamsungのZIFソケットタイプの64GBで、そもそもの性能がリード57MB/s、ライト38MB/sです。
X300のSSDは、同SamsungのSATA版ですので、リード100MB/s、ライト80MB/s。
そもそもドライブの性能自体が異なっているのではないでしょうか。

gamellagamella 2008/10/19 01:28 最後まで文章を読んでからコメントしてくださいね。