SSDの真の可能性:HDDとの比較と最新技術動向で探る(3/3 ページ)
SSDの市場が急速に拡大している。その利点が広く知られるようになるに連れ、多くの用途でSSDが利用されるようになってきた。だが、この新しいデバイスの能力と制約については、多くの誤解があるのも事実だ。そこで本稿では、その能力と制約について改めて解説するとともに、SSDの今後の可能性について検討してみたい。
コントローラの選択
コントローラは、ハードウエアによる処理がメインのデバイス、ソフトウエアによる処理がメインのCPU、その組み合わせで処理を行うデバイスの3種類に分けることができる。いずれを選択するかは、コストと性能、消費電力、柔軟性、更新可能性などのトレードオフを考慮して決めなければならない。どのような構成であれ、SSDにアクセスするホストCPUやコアロジックチップセットなどが必要とするハードウエアインターフェース/ソフトウエアインターフェースとフラッシュメモリーとの間の橋渡し役を担うことになる。
また、コントローラは、単一/複数コンポーネントのフラッシュメモリーアレイに保存されたデータを管理する。そして、アレイ内のメモリーブロックに、ホットスポットとなるような過度の消去サイクルが生じるのを防ぐ役割を担う。この機能は、アクセス時間などの点においてホストに影響を与えることなく、バックグラウンドで行われることが望ましい。加えて、コントローラは、フラッシュメモリーの利点を活用しつつ、読み書き速度の欠点を緩和する役割も果たさなければならない。その結果として、少なくともHDDと同程度か理想的にはHDDよりも高速なアクセス速度を実現することが望まれる。
SSDの性能を向上させるための方法の1つは、消費電力が増加するという問題に目をつぶれば、コントローラとフラッシュメモリーとの間に複数のアドレス線とデータ線、制御線を配置し、マルチチャンネル化することである。これによって、複数のコンポーネントに対する並列のアクセスが可能になる。さらに、複数のアレイエレメントに対して同時に読み出し/書き込み/消去が行えるだけでなく、これらの操作を並列化することも可能になるだろう。そのためには、システムのアクセス構造が、このような複雑なコントローラに対応している必要がある。ただし、マルチチャンネル構造を採用する際には、SSDの容量の粒度と、プログラムページや消去ブロックの実効サイズも複数倍にすべきだろう。それにより、シングルチャンネルモードとマルチチャンネルモードのどちらでも動作する柔軟性の高いコントローラ設計とすることができる。
最新のフラッシュメモリーは、プログラムページと消去ブロックのサイズや、プログラム時間と消去時間に、大きな幅がある。これを吸収するのもコントローラの役割の1つである。
さらに、コントローラはコンポーネントまたはコンポーネント内のブロックに対するウェアレベリング(劣化の抑制)を目的とした処理も担う。バックグラウンドの消去処理(ハウスキーピングやガーベジコレクション、マージなどの処理)が、書き込み要求によって発生した同じコンポーネント/ブロックに対するフォアグラウンドのプログラミング処理や、フォアグラウンドの読み出し要求と競合しないようにフラッシュメモリーを管理するのだ。HDDのバッファと同様に、 SSDに大容量のRAMキャッシュを搭載すれば、それがシステム側のバッファリングと効果的に協調し、バックグラウンド処理が性能に与える影響を緩和することができる。ただし、この方法では、より多くの部品が必要となり、コストは上昇する。
ホストシステムの改善
SSDとは異なり、HDDではビット単位で完全な上書きが行える。例えば、ファイルの削除の要求が生じると、ファイルシステムは内部テーブルを更新するが、その情報はすぐにはドライブに伝達されない。そのため、従来のインターフェースにSSDのコントローラを接続すると、コントローラは、削除するファイルを含むページやブロックを新規書き込みが可能な状態とするために、バックグラウンドのクリーンアップ処理を行ってよいのかどうかを把握できない。必要な消去処理およびプログラミング処理は、ドライブにおいてその時点で無効となっているPBA(物理ブロックアドレス)に対応するLBA(論理ブロックアドレス)に対し、ファイルシステムから明示的な上書きを要求された後に初めて発生する。これらの処理は、残念ながらフォアグラウンド処理となり、読み書きの速度を低下させる原因になる。
ベンダーは、通常、スペックに対してプラスアルファのディスク容量を備えた状態でSSDを工場から出荷する。このプラスアルファの部分はOSからは不可視なものとなる。コントローラはこの部分の容量を用いて、上述したような不可避な性能低下の発生を遅らせるようにする。
現在、INCITS(情報技術規格国際委員会)のT13 Technical Committee(技術委員会)がATA(Advanced Technology Attachment)コマンドセットの一部として「Trim」コマンドの標準化を進めている。ホストシステムは、Trimコマンドを実行する前に、ドライブの回転速度を調べる。そして、「0rpm」という結果を得たら、システムはそのドライブがSSDであることを認識する。その上で、Trimやそのほかの関連パラメータをサポートするかどうかの問い合わせを行う。Trimコマンドはドライブに対し、アレイ内に保存されたページが無効となっており、ハウスキーピングの対象であることを通知する。Trimコマンドに対応したOSにおけるファイルの削除処理では、対応するLBAの関連情報がドライブのコントローラに送信される。
Trimコマンドは、ファイルの削除が高い頻度で発生する用途において、SSDの性能を大幅に改善する。ただし、編集を目的としてデータを開き、その更新版を保存する場合や、米Microsoft社「Outlook」の.pstデータベース形式で保存したりする場合など、ファイルの更新が生じるケースでは効果がない。
一般的に、FFS(Flash File System)には、LBAとPBAとの間の結合が強いことに起因する欠点がある。一方、SanDisk社のFFSは、同社が2006年にイスラエル msystems社を買収して獲得したFTL(Flash Translation Layer)技術とともに、WindowsレジストリやFAT(File Allocation Table)など、頻繁に更新されるファイルに対しPBAの独立性を提供してくれる。
SanDisk社は2009年1月の『CES(International Consumer Electronics Show)』でファイルシステム「ExtremeFFS」を発表、同社製品にそれを組み込むとともにライセンス提供も開始した。ExtremeFFSを利用すれば、LBAとPBAとの間の明示的な結合をさらに切り離すことにより、ランダム書き込み速度が100倍も改善されるという。ExtremeFFSでは、この目的を達成するためにフラッシュメモリーの使用効率を下げているとのことだが、SanDisk社は詳細を明らかにしなかった。しかし、Intel社/Micron社の34nmプロセスなどで実現されるデバイスの処理能力を考えると、ExtremeFFSにおけるオーバーヘッドも、将来的には実用上あまり問題にならなくなるものと思われる。
システムの最適化
現在、SSDは既存のHDDアプリケーションの分野へと割って入ることにより、その大きな市場を利用して、一気に普及しようとしている。SSDがいちばんの選択肢となるに連れ、フラッシュメモリー特有の能力をうまく利用するソフトウエア/ハードウエアへのニーズが高まっている。例えば、ディスクの定期的な自動デフラグメンテーション、プリフェッチ、ファイル格納場所の最適化、システム側のキャッシングなど、一般的なファイルシステム処理は、HDDのヘッドの再配置に伴う遅延やプラッタの回転遅延、ランダム読み出しによるアクセス速度の低下を補うことを目的としたものである。SSDには、このような遅延は存在しない。従って、これらの処理を排除することにより、システムコストや消費電力などの主要な要素を改善することが可能になる。
Microsoft社の最新OS「Windows 7」では、システムにSSDが存在することを検出すると、Trimコマンドのサポートを確認するのと同じ機構によって調整が行われる*2)。Trimコマンドのサポートは、簡単なファイル削除操作のみにとどまらず、パーティションのフォーマットやシステムスナップショットの取得など、関連機能全般にわたって拡張されている。それによって、できる限りランダムロケーションへの書き込みを回避することで、HDDであってもSSDであっても性能が向上するという。また、フラッシュメモリーに格納されたデータに対するファイル圧縮をサポートすることにより、両技術のビット当たりのコスト差を小さくすることができる。さらに、Windows 7では、パーティションおよびファイルロケーション終了位置をフラッシュメモリーの書き込みページの境界にそろえる(境界をまたがないようにする)などの対応を行っている。今後、SSDの高速な読み出し速度を利用して、DRAMから読み出していたデータの一部をSSDから読み出すことにより、システムの DRAMコストを低く抑えられるようになるだろう。
ハードウエアインターフェースにも最適化の余地がある。HDDの場合、回転数が高いエンタープライズ向け製品以外では、RAMバッファからのデータ転送でしか、最新の3ギガビット/秒(Gbps)のSATA(Serial ATA)やSAS(Serial attached SCSI)の帯域幅を活用できていなかった。一方、SSDにおいては、SATAやSASの性能をいかんなく発揮できるだろう。今後、6Gbpsのシリアルストレージインターフェースが登場すれば、両技術の性能の差はさらに広がることになると考えられる*3)、*4)。4.8GbpsのUSB 3.0や、Intel社が開発中の光インターフェース技術「Light Peak」によっても、同様に性能の差が生じるはずだ。
さらに言えば、既存のストレージインターフェースにとらわれる必要もない。米Fusion-io社は、PCI(Peripheral Component Interconnect) Expressのアドインカードによって、SSDをCPUから見て近い場所へ配置することにより、性能を改善できることを把握している(写真1)。このように、システムボードに直接接続すれば、チップセットへの専用インターフェースによってさらに密接な結合が可能となる。例えばIntel社は、同社のメモリーキャッシュ技術である「Turbo」にこの手法を適用している。ただし、この手法では、システムメモリーの割り当てをエンドユーザーが後から変更するのが困難になることが欠点だ。
また、DRAMバスを利用する方法もある。Intel社の1990年代半ばのフラッシュメモリー「28F016XD」ではこの方法を採用しようとしていた。Spansion社の「EcoRAM」は、この方法を採用したものだ。この構成を選択すれば、専用のコントローラICは用いず、ホストCPUかチップセットのロジック回路によってソフトウエア的に動作させるコントローラを採用できるかもしれない。
脚注
※2…"Engineering Windows 7," Microsoft Corp, 2009. http://blogs.msdn.com/e7/archive/2009/05/05/support-and-q-a-for-solid-state-drives-and.aspx
※3…Dipert, Brian, "Speedy simplicity: serial-storage interfaces," EDN, Jan 22, 2004, p.33
※4…Dipert, Brian: "Interface overkill? Is eSATA necessary for your next system design?" EDN, May 10, 2007, p.48
Copyright © ITmedia, Inc. All Rights Reserved.