コンピュータの世界では、長らくストレージデバイスとして磁気メディアが使用されてきました。磁気ヘッドを使い、ディスクやテープなどの磁性体にデータを磁力として記録する方式で、磁気テープから始まり、フロッピーディスクやハードディスク、光磁気ディスク(MO)などがその代表と言えます。しかし長年の半導体技術の進歩により、小容量サイズのデバイスから順に半導体メモリデバイスへと置き換わりつつあります。これはNANDフラッシュメモリに代表される不揮発性半導体メモリの大容量化と低価格化によって、半導体メモリのストレージデバイスへの採用が可能になったためです。
半導体メモリのもっとも身近な存在は、メモリカードやUSBメモリなどでしょう。メモリカードはデジカメや携帯電話をはじめ、ゲーム機やビデオカメラ、さらにはカーナビや音楽プレーヤーまで、さまざまな用途で使われています。USBメモリ(写真1)はこのメモリカードとカードリーダーを一体化したような製品で、パソコン間でデータのやりとりをしたり保管したりする「リムーバブルメディア」として使用され、現在では完全に磁気メディアであるフロッピーディスクや光磁気ディスク(MO)に置き換わってしまいました。
そして今、同じような半導体メモリへの置き換えの流れが、モバイル機器やパソコンなどに採用されているハードディスクの領域にも押し寄せてきています。それが今回ご紹介するSSD(Solid State Drive)です。SSDの定義はNANDフラッシュメモリを記録媒体としたストレージデバイスであり、そのインターフェースにはSATAやIDEといったディスクインターフェースを採用している点が特徴です。USBメモリやSDカードなどのリムーバブルメディアは、一般的にSSDとは呼ばれません。
SSDがディスクインターフェースを採用しているのは、それがハードディスクの置き換えを目的にしたストレージデバイスであるためです。パソコンの主力OS「Windows」は、最新のWindows 8でも、原則としてディスクインターフェースに接続されたストレージデバイスからしか起動できない仕様になっています。このためSSDはハードディスクのように振る舞う(エミュレーションする)必要があり、ディスクインターフェースで接続する形式を採っているのです。
SSDの内部構造
SSDの内部構造は【図1】のようになっています。SSDの記録媒体であるNANDフラッシュメモリはそのままではSATAインターフェースに接続できないため、SSDコントローラが介在してアクセス制御を行っています。SSDコントローラには重要な3つの役割がああります。
1つ目はウェアレベリング処理。NANDフラッシュメモリには書き換え回数数千~数万回という寿命があるため、特定メモリセルへのアクセスが集中するとそのセルの寿命が短くなります。そこでアクセスするアドレスを拡散して、見かけ上の寿命を延ばす工夫が凝らされており、これをウェアレベリングと呼びます。(コラム参照)このためNANDフラッシュメモリの実際のアドレスとSSD外部から見たセクターアドレスは一致しておらず、書き込まれたファイルはSSD内部のあちこちに分散した状態で記録されています。データ復旧ではこのアドレスマップを正しく再構築する必要があり、復旧に失敗しないための重要なポイントとなります。
2つ目はエラー補正機能です。NANDフラッシュメモリは消去と再書き込みを繰り返すと徐々に性能が悪くなり、データを保持できる時間が短くなります。また同じセルのデータを繰り返し読み出すことでもエラーが増える傾向があります。このようなエラーからデータを守るために、SSDではNANDフラッシュメモリへの書き込みデータそのものに加えて、エラー補正のための生成データを書き込み、読み出し時にはこのエラー補正データを使ってエラーを補正する仕組みが備えられています。正常に使えているかのように見えるSSDでも、その内部ではメモリセルの劣化が進行していますが、そのエラー率が一定レベルを超えるまではエラー補正が有効に働くため、セル寿命には気付かない場合がほとんどです。しかしエラー補正が可能なレベルを超えると急速にエラーが多発するため、まるでSSDが突然壊れたかのように見えるので注意を要します。
3つ目は各ブロックの消去回数の管理です。NANDフラッシュメモリは複数のページをまとめたブロック単位で消去を行いますが、この消去回数でそのブロックの寿命が決まります。そこで各ブロックの消去回数を記録しておき、ウェアレベリング処理では消去回数の少ないブロックを優先的に消去して書き込み処理に使うことで、NANDフラッシュメモリ全体の寿命を延ばす仕組みです。
このような複雑な処理をリアルタイムに行うため、多くの場合SSDコントローラには32ビットRISCプロセッサを内蔵した専用チップが使用されています。
SSDの高速性の仕組み
NANDフラッシュメモリを記録媒体に使いストレージとして活用するという意味では、SSDはUSBメモリと似ていますが、SSDではストレージインターフェースに接続される点と、USBメモリを大きく上回るアクセス速度を持つ点が異なっています。
最近のSSDでは数百メガバイト/秒の転送速度を実現しており、これはハードディスクの50~150メガバイト/秒を大きく上待っています。SSDに使われているNANDフラッシュメモリは、単体での読み出し速度が40~80メガバイト/秒程度と、それほど高速なチップではありません、SSDではこれを4~12個並列動作させることで全体の転送速度を高めています。(写真2)これは複数のメモリモジュールを同時にアクセスすることでメモリアクセス速度を向上させるデュアルチャンネルアクセスや、複数のハードディスクを同時にアクセスすることで高速化するストライピング(RAID0)システムと同じ考え方です。またNANDフラッシュメモリが苦手とするデータの書き込み速度の向上にも工夫が凝らされており、SSD上に設けられたキャッシュメモリ(SDRAM)に一時的に書き込みデータを保持して順次書き込み処理を行ったり、より小さなページ単位で書き込みアドレスを管理することで消去時間の短縮・隠蔽を行ったりといった改良が加えられており、これがSSDメーカー各社の性能の違いの1つともなっています。