NANDフラッシュメモリの長所と短所
「フラッシュストレージ」が、フラッシュメモリを記憶媒体とするストレージ(データを保存しておくモジュールや装置など)を意味することと、代表的なフラッシュストレージ製品の事例を第1回ではご説明しました。厳密には、フラッシュメモリにはNANDタイプとNORタイプがあり、ストレージに使われるのはNANDタイプのフラッシュメモリ(「NANDフラッシュメモリ」あるいは「NANDフラッシュ」とも呼ばれる)です。
NANDフラッシュメモリには、「記憶容量当たりのコストが半導体メモリの中で最も低い」、「チップ(シリコンダイ)当たりの記憶容量が半導体メモリの中で最も大きい」という大きな特長を備えています。また重要な性質に、電源をオフにしても記憶したデータを維持する、という特長があります。この性質は「不揮発性」と呼ばれます。
NANDフラッシュメモリには当然ですが、短所もあります。データの読み書き速度に関しては、「書き込みが遅い」という大きな弱点を有しています。また通常の半導体メモリはワード単位の読み書きが前提であるのに対し、NANDフラッシュメモリはワード単位の読み書きができません。読み出しはページ単位、書き込みもページ単位です。そしてブロック単位で消去した領域だけが、書き込み可能な領域となります。
NANDフラッシュメモリは不揮発性メモリではあるものの、データの書き換え回数(サイクル数)とデータを保存しておく期間は制限されています。前者は「エンデュランスサイクル(書き換えサイクル数)」、後者は「リテンション時間(データ保持期間)」と呼ばれています。この2つはNANDフラッシュに限らず、不揮発性を備えた半導体メモリ全体が抱える制限です。
NANDフラッシュメモリとDRAM、MRAMの性能を比較
具体的な事例として、NANDフラッシュメモリとDRAM、MRAM(磁気メモリ)の性能を比較します。DRAMは単体のメモリとしては最も高速であり、読み書きの回数はほぼ無制限です。読み書きの動作はワード単位です。記憶容量(シリコンダイ当たり)は2023年末の時点で最大16Gbitと大きく、価格は16Gbit品のスポット価格が3.5ドル~4.5ドルとかなり低くなっています。仮に4ドルとすると、1Gbit当たりの価格は0.25ドルとなります。
DRAMの弱点は「揮発性」であることです。電源をオフにすると、記憶してあるデータはすべて消失します。このため、電源をオフにする前には何らかのストレージにデータを保管しておく必要があります。
MRAM(磁気メモリ)は現在、最もDRAMに近い不揮発性メモリです。データの読み書き速度はDRAMに比べると低いものの、かなり高速です。読み書きの速度では読み出しが高く、書き込みがやや低い傾向があります。DRAMと同様に、データの読み書きはワード単位です。書き込み回数には制限があり、100万回~1000万回とされています。データ保持期間は10年以上と実用的には十分な長さです。
MRAMの弱点は、価格が高いことです。記憶容量当たりの価格では、DRAMの100倍以上(1Gbit品のスポット価格が約100ドル)だと言われています。
なお、NANDフラッシュメモリの価格は、プレーナー型NANDフラッシュメモリの64Gbit品がスポット価格で4ドル弱です。仮に4ドルとすると、1Gbit当たりの価格は0.0625ドルとなります。DRAMのわずか4分の1です。この圧倒的な価格の低さが、NANDフラッシュメモリの最大の強みとなっています。
SSDの基本構成
フラッシュストレージにはいくつかの種類があります。その基本構成はほぼ同じであることは第1回でご説明しました。繰り返しになりますが、述べておきます。ストレージは記憶媒体であるNANDフラッシュメモリと、制御チップであるコントローラ、それからソフトウェア(ファームウェア)で成り立っています。代表的なフラッシュストレージにはSSD(Solid State Drive)、USB(Universal Serial Bus)メモリ、SDカード、eMMC(embedded Multi Media Card)、UFS(Universal Flash Storage)、UFSカードなどがあります。
ここでは、最も複雑で信頼性の高いフラッシュストレージである、SSDを取り上げます。SSDは記憶媒体(メディア)であるNANDフラッシュメモリ(通常は複数個)、制御そのほかの機能を担うSSDコントローラ、バッファメモリ(通常はDRAM)で構成します。バッファメモリを省いたSSDもあります。
SSDはサーバーやPCなどのホストマシンからは、HDD(Hard Disk Drive)と同様の外部記憶装置(外部ストレージ)として見えています。言い換えると、論理的にはSSDとHDDをホストマシンは区別していません。同じ外部ストレージとして扱います。このことが、クライアントPCではHDDとSSDの交換を容易にしています。
SSDコントローラの主な役割:制御とアドレス変換
SSDコントローラには数多くの役割があります。最も重要な役割は、NANDフラッシュメモリの制御です。具体的にはデータの読み出し動作、データの書き込み動作、データの消去動作を制御します。ここで消去(イレース)動作はフラッシュメモリに特有の操作で、不要になったデータを含む一定の領域(ブロック)に「1(論理値では「高」)」あるいは「0(論理値では「低」)」を書き込むことを意味します。なお、通常の消去動作では「1」を書き込みます。
NANDフラッシュメモリではデータの上書き(データが書き込んである領域に別のデータを書き込むこと)ができません。あらかじめデータを消去した領域にだけ、データを書き込むことができます。DRAMやSRAM、MRAMなどの半導体メモリは、上書きができるので、消去(イレース)という操作は存在しません。
制御とならぶ重要な役割に、アドレス変換があります。ホストマシンは論理アドレスでデータを扱っています。これをSSDコントローラでは物理アドレス(NANDフラッシュメモリのアドレス)に変換します。論理アドレスが隣接していても、物理アドレスが隣接しているとは限りません。詳しい説明は省きますが、NANDフラッシュメモリでは消去しようとするブロックに残っているデータを別のブロックに移動させたり、データの入出力速度を高めるためにデータを複数のNANDフラッシュに分割して書き込んだりします。このため、論理アドレスと物理アドレスは個別に存在しており、変換テーブルを介して紐づけられています。
SSDコントローラの主な役割:誤り訂正とウェアレベリング
SSDコントローラの役割はほかにもあります。例えばデータの誤り検出と誤り訂正は、SSDコントローラに必須の機能です。データをNANDフラッシュに書き込むときには、誤り検出・訂正用の符号(コード)を付与します。このコードは「ECC(Error Correcting Code)」と呼ばれています。データをNANDフラッシュから読み出すときは、コントローラは読み出したデータのECCをチェックし、誤りを検出したときは正しいデータに変更します。
ウェアレベリングも重要な機能です。NANDフラッシュメモリのメモリセル(データを保存する最小領域)は書き換えによって少しずつ劣化していきます。特定のメモリセルに書き換えが集中すると全体としては劣化が少ないにもかかわらず、訂正困難な不良に至るリスクが高まります。そこでSSDでは特定のメモリセルに書き換えが集中しないように、書き換えるアドレスを分散させています。これがウェアレベリングです。この機能もコントローラが担っています。
入出力データの流れからSSDコントローラの働きを見る
それでは、入力データ(SSDに書き込むデータ)と出力データ(SSDから読み出すデータ)の流れから、SSDコントローラの働きを見ていきましょう。
始めはデータの入力(データの書き込み)です。ホストマシンからホストインタフェースを介して書き込みが要求され、書き込むアドレス(論理アドレス)とデータが到着します。続いて論理アドレスを物理アドレスに変換します。変換テーブルは外付けのバッファメモリに格納してあります(外付けのメモリを省き、ホストマシンの主記憶に変換テーブルを置くこともあります)。それから誤りの検出・訂正用符号(ECC)をデータに付加します。続いてNANDフラッシュメモリの要求に合わせてデータを調整します。最後にフラッシュインタフェースを介して調整済みデータをNANDフラッシュメモリに書き込みます。
今度はデータの出力(データの読み出し)を説明します。ホストマシンから、ホストインタフェースを介して読み出しが要求され、読み出すアドレス(論理アドレス)が到着します。論理アドレスを物理アドレスに変換し、フラッシュインタフェースを介してNANDフラッシュメモリからデータ(調整済みデータ)を読み出します。続いて調整済みデータを調整前データに変換します。それからECCを読んで誤りの有無を検査し、誤りがあればデータに修正をかけます。最後にホストインタフェースを介してホストにデータを送信します。
ここまでSSDとSSDコントローラの概略を解説しました。次回以降は、SSDコントローラの内部構成と機能をもう少し詳しく説明します。