このところネットブックと並ぶヒット商品となっているのがNANDフラッシュメモリを用いたSSDだ(SSDにはDRAM等他のメモリデバイスを用いたものもあるが、ここではNANDフラッシュを用いたものをSSDとする)。SSDを内蔵したネットブックもあることを考えると、両者のヒットには相乗効果さえあるのかもしれない。
SSDは、これまでストレージデバイスの主流であり続けたHDDと違って、スピンドルモーターやヘッドといった可動部品を持たない。データにアクセスする際に、メディアの回転待ちやヘッドのシークを待つ必要がなく高速だ。同じ性能のHDDに対し消費電力が低く、衝撃にも強い。動作音がなく静なのも嬉しい限りだ。最小サイズを比べてもSSDは、HDDより格段に小型で、システムの小型化にも適する。
さらに条件付きだが、HDDより低コストでもある。ここでいう条件は、一定以下の容量のドライブ同士を比較した場合のドライブ単価のこと。今なら32GBのSSDは、32GBのHDDより安価、という意味だ。
もちろん、実際には32GBのHDDは、新品としてはほぼ存在しない。これは32GBのHDDを作っても、もはや割に合わないことを意味している。HDDはその容量にかかわらず、スピンドルモーター、ヘッド、プラッタ、基板、基板上のチップやコネクタ類、さらには密閉ケースといったさまざまな部品が必要だ。これに対しSSDは、基板とNANDチップ数個、そしてコントローラチップとコネクタがあればできてしまう。NANDチップの数が少なくて済む小容量なら、確実にHDDよりコストは低い。初代のEee PCが、HDDではなく4GBという小容量のSSDを搭載したのは、コストの点からも必然だったわけだ。
HDDのコストとSSDのコストが釣り合うポイントより小容量で良いのであれば、多くの人はSSDを選ぶ。それは上に書いたさまざまなメリットを考えれば当然だ。現時点では32GB〜64GBくらいに釣り合うポイントがあると思われるが、ムーアの法則、あるいは黄(ファン)の法則にしたがって、釣り合いポイントは毎年大容量へと向かっている。100GBクラスのSSDが、コストの点でHDDを下回る日はもうすぐそこに来ていると思うし、一般的なPCの利用に十分な256GBクラスのSSDが手軽に買える日もそう遠くないだろう。
この時点においてもバイト単価という点では、まだHDDの圧勝に違いない。しかし、一般的なPCに十分な容量のドライブのドライブ単価がHDDを下回った時点で、決定的なパラダイムシフトが起こり、PCの標準搭載ストレージデバイスがSSDへ切り替わっていく。OSのライセンス条件に、硬直的なSSDの容量という物差しを用いることがどんなにナンセンスなことか、レドモンドの人たちに分かって欲しいと思うのは筆者だけではないハズだ。
さて、そんなSSDにも欠点はある。バイト単価の点でHDDに遠く及ばないのは述べた通り。それ以外の欠点として良く知られているのは書き換え回数に制限があること、そしてもっと根本的な問題として、そもそも書き換えができないことが上げられる。
書き換えできないのに、その回数に制限があるというのは矛盾しているが、NANDフラッシュメモリはデータの書かれたページを直接書き換えることができない。書き換えを行なうには、いったん消去(ERASE)して、次に新しいデータを書き込む(PROGRAM)という2段階の動作となる。ERASEというのはすべてのbitを1にすることであり、PROGRAMは書き込むデータに応じて、必要なbitを0にしていく動作と考えればよい。
図1はNANDフラッシュチップの構造だが、左の「POLY1 FLOATING GATE」と呼ばれる部分に電子を注入したり、抜いたりすることでデータを保持する。FLOATING GATEに電子がない状態が1、電子を注入した状態が0だ。注入した電子は、Tunnel Oxideと呼ばれる酸化膜(絶縁膜)により、電源を落としても保持される。ところが、FLOATING GATEに電子の注入と抜き取りを繰り返すと、このTunnel Oxideが劣化していく。そして、ついには注入した電子を保持できなくなる。これが書き換え可能回数に上限が生じる理由だ。
この書き換え可能回数の問題をさらにややこしくするのは、ERASEとPROGRAMでその単位が異なることだ。NANDフラッシュでは基本的にERASEはブロック単位、PROGRAMはページ単位となる。実際のページサイズやブロックサイズはNANDフラッシュチップの容量、種類等によって異なるが、一番シンプルな例として2GbitのSLC NANDフラッシュチップを例にとると、ページサイズは2KB(2,048bytesのデータエリアと64bitのスペアエリアで計2,112bytes)、ブロックサイズは64ページ(2,112bytes×64)、1チップが2,048ブロックで構成されており2Gb(64×2,048=131,072ページ)ということになる(図2)。
【図1】NAND型フラッシュメモ
リは、FLOATING GATEに電 子を注入することで1と0の状 態を作り出す |
【図2】2Gbit SLC NANDチッ
プの構成 |
データをPROGRAMする場合は1ページ2KBが最小単位、ERASEする場合は64ページが最小単になるわけだ。一般にSLCチップの書き換え可能回数は10万回、MLCチップの書き換え可能回数は1万回と言われる。ブロックを消去して書き込むというサイクルを行なうごとに、1回づつ書き換え可能回数が減っていくと考えられる。
仮に16GBのSSDを2GbのSLC NANDフラッシュチップで構成すると、計64個のチップが必要になる。64個のチップは総計で8,388,608ページからなる。それぞれのページに10万回書き込めるとすれば、トータルでは8,300億ページ(回)ほど書き込めるわけだ。書き換え可能回数が一桁少ないMLCチップでも、単純に考えれば830億回書き込めることになる(通常、MLCチップはページサイズやブロックサイズがSLCチップと異なるため、この単純計算のようにはいかないが)。
書き込むデータが大きければ、一度に複数のページを使うから、書き換え可能回数はそのページ分だけ減ってしまうが、それでも相当な数だ。1日に書き込むデータ量を10GBとすると、10GBは500万ページだから、8,300億ページ書き込めるSLCチップのSSDであれば16万6,000日以上、つまりは454年以上利用できることになる(同じ場所にデータを書かないようにするウェアレベリングが完璧だとする)。書き換え回数など何も心配する必要がないような気がしてくるが、残念ながらそうはいかない。
これまでNANDフラッシュにおいてERASEはブロック単位、PROGRAMはページ単位で行なうと何度も述べてきたが、ページ単位で書き込めるのは、都合良く消去済みのページがある場合に限られる。たとえ最初は消去済みのブロックがあっても、すぐに上書きする(一度ブロックごと消去した後に、データを書き込む)必要がでてくる。
たとえば1度データを書き込んだことのあるブロックのページ1とページ2を書き換える場合、必要な2ページ分だけを更新するだけでは済まない。書き換えが行なわれない残りの62ページ分のデータを1度コントローラ上のバッファ等に読み込み(図3)、更新する2ページ分のデータを組み合わせて、新しい1ブロック分のデータを作成、その後当該のブロックをERASEして、バッファ上のデータをERASE済みのブロックにPROGRAMするという手順を踏まねばならない(図4)。この例の場合、2ページを書き込むのに32倍の64ページを書き込む必要があったことになる。
【図3】ページ1とページ2に
データを書き込む場合は、ま ずページ1とページ2が含まれ るブロック全体をDRAM等に コピーしたうえで、必要な データを挿入する |
【図4】DRAM等に必要な
データをコピーした後、ペー ジ1とページ2が含まれるブ ロック全体を消去し、 DRAM上のデータをブロック ごと書き戻す |
この32という数字をWrite Amplificationと呼ぶ。1ページの書き込みに32ページの書き込みが必要になる(つまり32倍の速度で書き込み可能回数が減っていく)というわけだ。一般には書き込む単位が小さければ小さいほど、Write Amplificationの数字は大きくなり、それだけNANDフラッシュの書き換え可能回数が減っていく。Write Amplificationが平均で20だったとすると、上の454年も22年あまり。普通のPCなら十分過ぎる値だが、その10分の1しか書き換えできないMLCだと、わずか2.2年ということになってしまう。途端に寿命が心配になってくる数字だ。しかも、ウェアレベリングのアルゴリズムの優劣でも、SSDの寿命は短くなることが考えられる。
実際のSSDでは、ウェアレベリングに配慮した上で、Write Amplificationを小さくするようアルゴリズムを工夫し、また予備のブロックを用意するなどして、一定の製品寿命を確保するようつとめている。多くのSSDベンダーは4〜5年は優に上回る製品寿命を確保したとするところが多い。
問題は、その裏付けをユーザーが検証できないことだ。アルゴリズムの優劣は製品を見ても、製品を紹介したメーカーのWebページを見てもサッパリ分からない。そもそも使われているNANDフラッシュチップの書き換え可能回数すら分からないし、アルゴリズム的に期待できる平均Write Amplificationも定かではない。これでは新品であっても製品寿命は知るよしもない。ましてや中古品ともなれば、想像するのさえ困難だ。
【図5】Intelは自社のアルゴ
リズム的優位性を説くが、そ れをユーザーが確認するすべ がない |
Intelは自社のMainstream SSDをモバイル用途に用いた場合のWrite Amplificationを1.1、ウェアレベリングアルゴリズムの効率を1.04とする(図5)。従来の他社製SSDのWrite Amplificationを10、ウェアレベリングアルゴリズムの効率を5としており、MLCであってもIntelのMainstream SSDの寿命は、従来型のSLCタイプSSDの4.3倍に達するとしている。が、ユーザーにこれを検証する術がないのでは、この数字を鵜呑みにするわけにはいかない。業界全体でSSDの寿命を計測する標準手法を確立する必要があるのではないだろうか。