SSDの性能を決める制御ICとフラッシュ・ファイル・システム

 SSD(Solid State Drive)すなわち、NAND型フラッシュ・メモリーを用いた外部記憶装置の設計が、かつてないほど難しくなっている。NAND型フラッシュ・メモリーのアーキテクチャが多様になっていることのほか、より新しくより微細化した製造プロセス技術への移行が続いていることや、新しい特徴が次々と産み出されていることがその原因だ。
現状では設計者が採るべき選択肢は3つある。(1)制御ICやNAND型フラッシュ・メモリーなどを組み合わせて独自に設計する「ディスクリート型」、(2)設計済みのメモリー・サブシステムを単に購入するという「マネージドNAND型」、(3)プロセッサやチップ・セットに組み込まれた制御IC部をNAND型メモリーと組み合わせる「組み込み型」、である。ただし(3)は、SSDの一般的な定義からは外れる。

互換性維持が難しい

 NAND型フラッシュ・メモリーの市場は拡大を続けており、参入メーカーが多い。メーカーごとに技術的な優位点もある。例えば1チップ当たりの容量が4Gビットを超えると、書き込みと読み出しの単位であるこれまでの512バイトというページ・サイズが最適とはいえなくなってきた。まずページ・サイズが2Kバイトの品種が登場し、4Kバイト品の出荷も最近始まり、さらには最新の40nmのプロセス技術を用いた8Kバイト品の提供が始まった。ページ・サイズだけではない。記憶容量を増やすため、SLC(Single Level Cell)から、1つのセルが最大4ビットの情報を持つ多値セル、すなわちMLC(Multi Level Cell)へという動きもある。

さらにややこしいことに、SSDには、これらとは別の技術もさまざまなメーカーによって追加されている。リード・キャッシュ、ライト・キャッシュ、コピー・バック(SSDが備えるキャッシュ・メモリーに対してのみ書き込むことで書き込み時間を短縮する手法)、複数のメモリー・セル・アレイに同時に書き込むマルチ・プレーン機能などだ。キャッシュは高速化のために効果的であり、特にライト・キャッシュは書き込み回数を減らすので素子の長寿命化につながる。

これらの新しい技術によってSSDのアクセス性能は高まるものの、互換性が保てなくなるという問題が生じる。開発リスクを下げるために多くのメーカーからNAND型フラッシュ・メモリーを購入している機器メーカーなどが、最も注意すべき問題だ。例えば製造元が違うと、消去や書き込みの要求タイミングが異なることから互換性の問題が生じることがある。

この問題に対処するために、SSD向けに開発された制御ICが役立つ。ホスト・プロセッサとフラッシュ・メモリーとの間に入り、非常に汎用性が高く、しかも単純で標準化されたインターフェースとして機能するからだ。ディスクリート型を採用した場合、機器メーカーは複数のメーカーから制御ICやフラッシュ・メモリーを購入し、ボードに搭載する。完成したボードに電源を投入すると、制御ICがフラッシュ・ファイル・システムに記録されている情報を基にフラッシュ・メモリーの種類を識別し、必要なハンドシェイク(通信信号の交換)を行い、低レベル・フォーマットを実行する。

マネージドNAND型のSSDも現れてきた。1つのパッケージに、制御ICとフラッシュ・メモリー・チップを組み入れたものであり、ユーザーである機器メーカーでの機器設計が容易になる。コンパクトなパッケージを購入するだけで、そのまま利用できる。これによりコストが下がり、ボード上の実装面積を削減できるため、標準的なATA(Advanced Technology Attachment)またはIDE(Integrated Device Electronics)インターフェースを用いる組み込み機器で人気を博している。

制御ICの内部構造

 ディスクリート型SSDの場合もマネージドNAND型SSDのどちらも、制御ICが内蔵するマイコン・コアがホストからのコマンドをフラッシュ・メモリーに向けたコマンドに翻訳する。アクセス性能を高めるため、ホストとフラッシュ・メモリーとの間にある小さなバッファ用SRAMが、マイコンと協調して動作する。マイコン処理に起因するオーバーヘッドのために生じる遅延を抑えるため、DMA(Direct Memory Access)コントローラを制御ICに組み入れる場合も多い。DMAコントローラは、ホストのATAやIDEのバスとフラッシュ・メモリーとを結ぶデータ・チャネルと、マイコンとの間のインターフェースとなる。DMAコントローラがSRAMバッファとフラッシュ・メモリーとの間でデータをやりとりすることで、マイコンのオーバーヘッドを抑える。

ディスクリート型にしてもマネージドNAND型にしても、差別化要因となるのはフラッシュ・ファイル・システムである。これはホストに対してフラッシュ・メモリーの物理的な構造を抽象化する役割を担うソフトウエアである。SSDの設計者の立場からすると、フラッシュ・ファイル・システムにより、設計がかなり単純化されるというメリットがある。誤り訂正要求仕様やページ・サイズ、セル当たりのビット数などといった仕様はNAND型フラッシュ・メモリーを製造したメーカーごとに異なる。フラッシュ・ファイル・システムはフラッシュ・メモリーに書き込む際に、このような差異を自動的に吸収する。さらに必要ならば、ユーザーである機器メーカーごとに独自の仕様を保持することもできる。バグ修正機能などを加えてもよい。フラッシュ・メモリーの管理機能を数多く持たせることができるため、データの一貫性を保つことができ、SSD自体の長寿命化にもつながる。

フラッシュ・ファイル・システム自体の実装方法はさまざまである。多くの制御ICでは、コストを下げるため、マスク・プログラマブルROMにフラッシュ・ファイル・システムを書き込んでいる。しかし米Silicon Storage Technology社のように、制御IC内の専用のフラッシュ・メモリー領域を使うメーカーもある(図1)。NAND技術の進歩の速さを考えると、この違いは大きい。

図1 米Silicon Storage Technology社のNANDriveの構成
左からシステムのATA/IDEバス、制御IC、フラッシュ・メモリー・チップという3つの部分に分かれる。制御IC内にマイコンなどが内蔵されている。NANDriveの外形寸法は24mm×12mm×1.3mm。出典:Silicon Storage Technology社

 制御ICのファームウエアをROMに記録している場合は、ファームウエアを更新する必要が出たときに、新しいプログラムの入ったROMへと交換を余儀なくされ、時間もコストもかかる。NAND型フラッシュ・メモリーの制御回路を搭載したSoC(System on Chip)でも同じ問題が発生する。フラッシュ・メモリーを含むICの設計に大きな変更を加えることが必然的に難しく、結果として使える部品の選択肢は限定されてしまう。それに対して、ファームウエアを制御ICが備えるフラッシュ・メモリーの中に保管している場合は、ファームウエアに新機能を追加しやすい。システム設計者はフラッシュ・メモリーをいつでも自由に選ぶことができる。その結果、市場投入まで開発期間を短縮できる。最も適した部品が使え、コストを抑えられる。

重要なECC処理

 ディスクリート型を使うにせよマネージドNAND型を使うにせよ、最大性能を保証するために、またフラッシュ・メモリーの耐久性を高めるために、そしてデータの整合性を確保するために、ユーザーとなる機器開発者はさまざまなフラッシュ・メモリーの仕様を確認する必要がある。特に重要なのが、ECC(誤り訂正コード)である。NAND型フラッシュ・メモリーでは、ランダムな読み出しエラーが起きることがある。主に隣接したセルで読み出しや書き込みが行われた場合に発生する。制御ICは、フラッシュ・メモリーにデータを書いたり、フラッシュ・メモリーから読んだりする際に、ECCによってこのようなエラーを防ぐ。

この機能は、記憶密度を上げるためにMLC技術を導入した結果、特に重要となった。SLCの場合には、512バイトごとに1ビットの割合でランダムに起きた誤りを修正する必要があった。MLCでは1つのセルに最大4ビットを記録するため、512バイトごとに最大4ビットの割合にまで増える。SLCとMLCのどちらもセルに印加する電圧は通常同じなので、MLCのそれぞれのビット状態ごとに与えられる電荷量は小さい。その結果、例えば温度の変動などによって、誤動作を引き起こしやすい。

さらにプロセスが微細になればなるほど、ECCの性能が高くなければならない。40nmプロセス技術によるNAND型フラッシュ・メモリーの大半は8ビットのECC処理回路が必要とされる。ディスクリート型に向けたSilicon Storage Technology社の制御ICや「NANDrive」ファミリをはじめとして、そういった8ビットのECC処理回路を提供する企業も現れている。

NAND型フラッシュ・メモリーは、ビット単価を抑えやすいため、メモリーの大容量化には適する。一方、データの信頼性という面では問題が残る。NOR型の場合はすべてのメモリー・ビットにわたって正しい値が保証されるが、NAND型の場合、生産現場での歩留まりを上げるため、不良ブロック(一括消去の単位で通常16Kバイトまたはもっと大きい)を許容したまま製造することがある。従ってSSDを設計するにあたっては、不良ブロックの管理が非常に重要となる。

通常は、フラッシュ・メモリーを製造した企業がどのブロックが不良であるかを示すマークを付ける。最初の段階でファームウエアが不良ブロックを管理し、不良ブロックが実際のメモリー空間にマッピングされないようにする。制御ICに対して、その不良ブロックを使わないように指示するのもファームウエアの役目だ。システムを使用中に不良ブロックを見つけた場合は、ファームウエアが不良ブロック情報を更新する。

書き込み回数を増やす

 SSDを構築する場合、耐久性も問題となる。フラッシュ・メモリーを使う限り、書き込みの回数の制限からは逃れられない。消去や書き込みを繰り返した後には、メモリー・セルがデータを保持できなくなってしまう。しかも上限回数は、製造プロセスが微細化し、またSLCからMLCへという流れの中で少なくなってきた。SLCなら例えば10万回だったが、より新しいはずのMLCではたったの1万回で限界に達する、という具合だ。

フラッシュ・メモリー制御ICはこういった限界に対処するため、ファームウエアの中に複雑なウエア・レベリング(使用セルの平均化)機能を用意している。これはメモリーの使用回数をブロック単位あるいはページ単位で追跡し、フラッシュ・メモリーの論理的あるいは物理的なセクターの対応情報と、実際の書き込みごとに増えていくカウンタとの間でマッチングをとるようなアルゴリズムである。ウエア・レベリング・アルゴリズムにより、それまであまり使われていなかったブロックを自動的に制御ICが割り当て、その結果システム全体の耐久性が高まる。フラッシュ・メモリーのすべてのセルが同時に書き込み回数の限界に達することになり、非常に効率が良い。また限界が近づいたときにユーザーに警告できるため、データの損失を防ぐことができる。

電力をいかに節約するのかも大きな課題である。多くのNAND型フラッシュ・メモリーは、電池で駆動する携帯型機器で使わることが多いのでなおさらだ。電力効率を最大限に高めるため、NAND型フラッシュ・メモリーは通常、ディスクリート型にせよマネージドNAND型にせよ、電力管理ユニット(PMU:Power Managing Unit)を搭載し、SSD全体を常時検査して、使っていない機能ブロックの電力を落としていく。電力を落とした機能が必要となったときは、制御ICが機能を即時に立ち上げ、ホストからのデータ・アクセスを開始する。

PR

@IT Sepcial