(57)【特許請求の範囲】
【請求項１】
不揮発性半導体メモリで構成されホストからハードディスクドライブ互換制御技術で制御可能に構成された記憶装置であって、
ある電圧レベルのしきい値を複数設定し２ビット以上の多値でデータ書き込みが可能にされた不揮発性半導体メモリセルのメモリアレイで構成された不揮発性半導体メモリと、
揮発性メモリと、
前記ホストから発行されたコマンドに基づいて前記不揮発性半導体メモリの動作指示を行うコントローラと、
電源保持用キャパシタとを備え、
前記不揮発性半導体メモリは、前記多値書き込み可能な不揮発性半導体メモリセルが２値（１ビット）でデータ書き込みが行われるブロックとして制御される領域（以下「２値ブロック」という。）と、前記多値でデータ書き込みが行われるブロックとして制御される領域（以下「多値ブロック」という。）で構成され、ユーザのアクセスが不可とされるシステム領域のデータは前記２値ブロックに格納され、ユーザデータ領域のデータは前記多値ブロックに格納されるように設定されており、
前記多値書き込み可能な不揮発性半導体メモリセルのブロックを２値ブロックとしてデータを格納するか多値ブロックとしてデータを格納するかを示す２値／多値書き込み情報を有したブロック管理テーブルが前記２値ブロックのシステム領域に格納されており、
前記コントローラは、
前記記憶装置の動作時に前記ブロック管理テーブルを前記揮発性メモリに展開する処理と、
前記不揮発性半導体メモリの書き換え耐数に至る前の処理において、ホストから送信されるデータを前記ブロック管理テーブルの２値／多値書き込み情報を参照して前記２値ブロックに格納するデータか前記多値ブロックに格納するデータかを決定し、前記不揮発性半導体メモリにデータを書き込む処理と、
電源遮断が発生したときは、前記電源保持用キャパシタから供給される電源によって、前記揮発性メモリに一時記憶されているユーザデータを前記２値ブロックに書き込む処理とを実行するように構成されてなることを特徴とする記憶装置。
【請求項２】
請求項１記載の記憶装置において、前記不揮発性半導体メモリのワード線はそれぞれ上位ワード線と下位ワード線で構成され、前記多値ブロックにおいては前記上位ワード線と下位ワード線の両方を使用してデータ格納が行われ、前記２値ブロックにおいては前記上位ワード線のみを使用してデータ格納が行われることを特徴とする記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理機器などに組み込まれる記憶装置技術に関し、特に、不揮発性半導体メモリを用いて構成された記憶デバイスの高信頼性化に有効な技術に関する。
【背景技術】
【０００２】
近年、パーソナルコンピュータなどの情報処理機器では、ハードディスクドライブに代わる記憶デバイスとしてソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）、いわゆるフラッシュメモリドライブなどの記憶デバイスが普及しつつある。
【０００３】
このソリッドステートドライブは、磁気ディスクの代わりに記憶媒体として不揮発性半導体メモリを用いた記憶デバイスである。ソリッドステートドライブは、前述のように磁気ディスクを持たないため、データの読み書きの際に読み取り装置(ヘッド)をディスク上で移動させる時間（シークタイム）や、磁気ディスク上の目的のデータがヘッド位置まで回転してくる時間(サーチタイム)が不要となる。
【０００４】
これにより、データの読み書きがハードディスクドライブに比べて高速化されることになる。また、ハードディスクドライブのようにモータによる磁気ディスクの回転動作が不要となるので、消費電力も低減させることができる。
【０００５】
一般に、ソリッドステートドライブに用いられる不揮発性半導体メモリは、１つのメモリセルに１ビットの書き込みが行われる、ＮＡＮＤ型ＳＬＣ（Ｓｉｎｇｌｅ  Ｌｅｖｅｌ  Ｃｅｌｌ）が使用されている。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところが、上記のようなソリッドステートドライブでは、次のような問題点があることが本発明者により見い出された。
【０００７】
すなわち、ソリッドステートドライブに用いられるＮＡＮＤ型ＳＬＣの不揮発性半導体メモリは、ハードディスクに比べて高価なため、大容量化して利用することが難しいという問題がある。
【０００８】
また、ソリッドステートドライブのコストを下げる技術としては、たとえば、１つのメモリセルに２ビットのデータを書き込むＭＬＣ（Ｍｕｌｔｉ  Ｌｅｖｅｌ  Ｃｅｌｌ）タイプの不揮発性半導体メモリを用いることが考えられる。
【０００９】
これにより、ＳＬＣタイプの不揮発性半導体メモリを用いた場合よりも、大容量化、および低価格化を実現し易くなり、１ビット当たりのコストもハードディスクドライブに近づけることができる。
【００１０】
しかしながら、ＭＬＣタイプの不揮発性半導体メモリは、消去／書き込み回数が、たとえば、１０4 回程度であり、ＳＬＣタイプの不揮発性半導体メモリの消去／書き込み回数である１０5 回程度と比べて書き換え耐数が１桁少ないオーダーとなってしまい、信頼性が大きく低下してしまうという問題がある。
【００１１】
本発明の目的は、信頼性を損なうことなく、大容量で、かつ低コストな不揮発性半導体メモリを用いた記憶装置を実現することのできる技術を提供することにある。
【００１２】
本発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００１３】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００１４】
本発明は、ある電圧レベルのしきい値を複数設定し、２ビット以上のデータを記憶する複数のメモリセルを有するメモリアレイを有した１以上の不揮発性半導体メモリと、外部から発行されたコマンドに基づいて該不揮発性半導体メモリの動作指示を行うコントローラとを備え、該不揮発性半導体メモリは、不揮発性半導体メモリにデータが書き込まれる際に、２値でデータを格納するか多値でデータを格納するかを示す２値／多値書き込み情報を有したブロック管理テーブルを備え、該コントローラは、ブロック管理テーブルの２値／多値書き込み情報を参照して不揮発性半導体メモリにデータを書き込むものである。
【００１５】
また、本願のその他の発明の概要を簡単に示す。
【００１６】
本発明は、前記ブロック管理テーブルが、不揮発性半導体メモリにおける記憶領域の消去単位となるブロックごとの書き換え回数を示す書き換え回数管理情報を有し、該コントローラは、多値でデータを格納するブロックの場合、ブロック管理テーブルの書き換え回数管理情報から、ブロックの書き換え回数が任意の設定値以上か否かを確認し、設定値以上と判断すると、２値でデータを格納する代替記憶領域に設けられたブロックにデータを格納するものである。
【００１７】
また、本発明は、前記コントローラが、不揮発性半導体メモリに格納されるデータに対してデータ訂正用のＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を付加するＥＣＣ付加部を備え、該ＥＣＣ付加部は、データが、多値でデータを格納する多値ブロックに格納される際、２値でデータを格納する２値ブロックに格納される場合よりも、データ訂正用のＥＣＣのビット数を多く付加するものである。
【００１８】
さらに、本発明は、前記ブロック管理テーブルが、不揮発性半導体メモリの任意の記憶領域に２値で格納されるものである。
【００１９】
また、本発明は、前記不揮発性半導体メモリに記憶されるユーザデータが、ユーザデータ領域のブロックに多値で格納され、該ユーザデータ領域のブロックの書き換え回数が任意の設定値以上になると、２値でデータを格納する代替記憶領域に設けられたブロックにデータを格納するものである。
【発明の効果】
【００２０】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２１】
（１）低コストで大記憶容量の記憶装置を実現することができる。
【００２２】
（２）また、不揮発性半導体メモリを用いた記憶装置の信頼性を大幅に向上させることができる。
【発明を実施するための最良の形態】
【００２３】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００２４】
図１は、本発明の一実施の形態によるソリッドステートドライブの構成例を示すブロック図、図２は、図１のソリッドステートドライブに設けられた不揮発性半導体メモリのメモリアレイの構成例を示す説明図、図３は、図１のソリッドステートドライブに設けられたコントローラの構成例を示すブロック図、図４は、図１のソリッドステートドライブに設けられた不揮発性半導体メモリに格納されたブロック管理テーブルの構成例を示す説明図である。
【００２５】
本実施の形態において、記憶装置であるソリッドステートドライブ１は、図１に示すように、たとえば、パーソナルコンピュータなどのホストＨに内蔵されている記憶装置である。ホストＨは、たとえば、ハードディスクドライブ互換の制御技術により、バスＢ０を介してソリッドステートドライブ１にデータの送受信を行う。
【００２６】
ソリッドステートドライブ１は、コントローラ２、揮発性メモリ３、電源保持用キャパシタ４、および複数の不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1〜８4 から構成されている。コントローラ２には、バスＢ１〜Ｂ４を介して、不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 がそれぞれ接続されている。
【００２７】
また、コントローラ２には、バスＢ５を介して揮発性メモリ３が接続されている。コントローラ２は、ソリッドステートドライブ１の制御を司り、不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 におけるデータの消去／書き込み／読み出し動作などを行う。
【００２８】
揮発性メモリ３は、たとえば、ホストＨとの入出力データを一時的に保存するコントローラ２のキャッシュとして用いられる。さらに、揮発性メモリ３は、不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 のユーザデータ領域を管理する管理データが記憶される。ユーザデータ領域は、ユーザがアクセス可能な記憶領域である。
【００２９】
電源遮断された際、揮発性メモリ３に記憶されている管理データ、およびキャッシュデータなどは、任意の不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 にそれぞれ保存される。
【００３０】
電源保持用キャパシタ４は、一定時間、内部電源を保持し、コントローラ２、揮発性メモリ３、ならびに不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 に電源を供給する。
【００３１】
不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 は、ユーザデータなどをそれぞれ格納する。また、不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 は、フラッシュメモリなどに例示される不揮発性半導体メモリであり、１つのメモリセルに２ビットのデータを書き込むＭＬＣタイプとなっている。
【００３２】
不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 は、前述したようにＭＬＣタイプとなっているが、データは、消去単位であるブロック単位毎に２値でデータを格納する２値格納領域と多値でデータを格納する多値格納領域とに分割されて格納される。
【００３３】
図２は、不揮発性半導体メモリ５1 におけるメモリアレイの構成例を示す説明図である。なお、図２では、不揮発性半導体メモリ５1 について説明するが、他の不揮発性半導体メモリ５2 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 についても同様の構成となっている。
【００３４】
不揮発性半導体メモリ５1 は、図示するように、１Ｇビット（２値）のメモリマットＭＴ１，ＭＴ２が設けられている。メモリマットＭＴ１，ＭＴ２は、ワード線数が３２Ｋ本、ワード線数サイズが４Ｋ本にそれぞれ構成されている。
【００３５】
消去単位であるブロックサイズは、２値の場合には１２８ＫＢとなっており、多値の場合には２５６ＫＢとなっている。
【００３６】
不揮発性半導体メモリ５1 は、１ワード線を上位ワード線と下位ワード線との２ワード化してあり、見かけ上ワード線を２倍としている。そして、２ビット以上のデータを格納する多値として用いる場合には、上位ワード線、および下位ワード線の両方を使用し、１ビットのデータを格納する２値として用いる場合には、２ワード化してあるワード線の上位ワード線のみを使用する。
【００３７】
図３は、コントローラ２の構成例を示すブロック図である。
【００３８】
コントローラ２は、図示するように、ＭＰＵ（Ｍｉｃｒｏ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）９、データ格納部１０，１１、書き込み／読み込み／消去制御部１２、ページアドレス制御部１３、およびＥＣＣエンコーダ／デコーダ１４，１５から構成されている。
【００３９】
ＭＰＵ９は、コントローラ２におけるすべての制御を司る。データ格納部１０は、バッファであり、ホストＨとの送受信データを一時的に格納する。データ格納部１１は、バッファであり、不揮発性半導体メモリへの書き込み／読み込みデータを一時的に格納する。
【００４０】
書き込み／読み込み／消去制御部１２は、ＭＰＵ９の制御に基づいて、任意の不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 にデータの書き込み／読み込み／消去を行う。
【００４１】
ページアドレス制御部１３は、ブロック管理テーブルＢＴ（図４）を参照し、ページアドレスの制御を行う。ＥＣＣエンコーダ／デコーダ１４は、２値のデータに対してのＥＣＣの付加や、データ訂正処理を行う。ＥＣＣエンコーダ／デコーダ１５は、多値のデータに対してのＥＣＣを付加や、データ訂正処理を行う。
【００４２】
図４は、ブロック管理テーブルＢＴの構成例を示す説明図である。
【００４３】
ブロック管理テーブルＢＴは、回数管理テーブルＴ１、２値／多値テーブルＴ２、およびアドレス変換テーブルＴ３などから構成されており、これらの管理情報がブロック番号毎に格納されている。
【００４４】
回数管理テーブルＴ１は、そのブロックの書き換え回数を示すテーブルであり、２値／多値テーブルＴ２は、そのブロックが２値、多値のどちらで使われるかを示すテーブルである。
【００４５】
ブロック管理テーブルＢＴは、不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 のシステム領域にそれぞれ格納される。システム領域は、ユーザがアクセス不可の記憶領域である。
【００４６】
２値／多値テーブルＴ２の初期値は、たとえば、ユーザデータ領域のすべてのブロックを多値で使用するように設定されており、システム領域のブロックは、２値で使用するように設定されている。
【００４７】
このように、ブロック管理テーブルＢＴなどの書き換え頻度が高く、信頼性が求められるデータを２値で記憶することにより、ソリッドステートドライブ１の信頼性をより向上させることができる。
【００４８】
また、アドレス変換テーブルＴ３は、ホストＨから指定された論理アドレスから、不揮発性半導体メモリの物理アドレスへの変換を管理するテーブルである。
【００４９】
不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 には、前述した管理データを記憶するシステム領域、ユーザデータを格納するユーザデータ領域、ならびに該ユーザデータ領域の代替となり、代替記憶領域として用いられる予備領域が備えられている。
【００５０】
そして、ユーザデータ領域のあるブロックに不良が発生した際には、コントローラ２が、その不良ブロックの代替として予備領域のあるブロックを使用する代替処理を行う。
【００５１】
ブロック番号は、不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 におけるすべて領域（システム領域、ユーザデータ領域、および予備領域）のブロックに対して通し番号となるブロック番号’０’〜’Ｎ’となっている。
【００５２】
ブロック管理テーブルＢＴは、電源遮断時には、不揮発性半導体メモリ５1 〜５4 ，６1 〜６4 ，７1 〜７4 ，８1 〜８4 のシステム領域にそれぞれ格納されており、ソリッドステートドライブ１が動作した際に揮発性メモリ３に展開される。
【００５３】
次に、本実施の形態によるソリッドステートドライブ１の動作について説明する。
【００５４】
まず、ホストＨから送信されたデータは、バッファであるデータ格納部１０に一時的に格納される。このとき、回数管理テーブルＴ１の該当ブロックの書き換え回数が任意の設定値以上であれば、ＭＰＵ９により該当ブロックの２値／多値テーブルＴ２が多値から２値として使用するように更新される。
【００５５】
データ格納部１０に格納されたデータは、ＥＣＣエンコーダ／デコーダ１５（またはＥＣＣエンコーダ／デコーダ１４）によってＥＣＣが付加された後、揮発性メモリ３に格納される。
【００５６】
ＥＣＣエンコーダ／デコーダ１４、またはＥＣＣエンコーダ／デコーダ１５の選択は、書き込み／読み込み／消去制御部１２がブロック管理テーブルＢＴ（図４）の２値／多値テーブルＴ２を参照することにより決定される。
【００５７】
前述したように、初期設定では、ユーザデータ領域のブロックが多値としてデータが格納されるように２値／多値テーブルＴ２が設定されているが、回数管理テーブルＴ１の書き換え回数が任意の設定値以上となっている場合には、２値としてデータが格納されるように２値／多値テーブルＴ２の設定変更が行われる。
【００５８】
続いて、ＭＰＵ９は、揮発性メモリ３におけるデータキャッシュ領域の状態から、書き込み／読み込み／消去制御部１２に任意の不揮発性半導体メモリへの書き込み指示を行い、揮発性メモリ３に格納されたデータがデータ格納部１１に格納される。
【００５９】
このとき、ページアドアドレス制御部１３は、ブロック管理テーブルＢＴを参照し、２値／多値のいずれになるかを確認し、アドレス制御を行う。続いて、書き込み／読み込み／消去制御部１２は、ＭＰＵ９が設定した選択ビット値を参照して選択された任意のブロックにデータの書き込みを行う。
【００６０】
データ書き込みが終了すると、ＭＰＵ９は、ブロック管理テーブルＢＴの回数管理テーブルＴ１の書き換えを行う。
【００６１】
また、任意のブロックからデータを読み出す場合、読み出されたデータは、データ格納部１１に格納され、ＥＣＣエンコーダ／デコーダ１５（またはＥＣＣエンコーダ／デコーダ１４）によりデータ訂正処理が行われた後、揮発性メモリ３に該データが格納される。
【００６２】
さらに、書き込み／読み出し／消去制御部１２は、データの書き込み、または読み出し時にＦＡＩＬ（エラー）となると、ＦＡＩＬとなったそのブロックのデータを書き換えの際に予備領域に設けられた任意のブロックに書き込むように制御を行う。
【００６３】
次に、ＥＣＣエンコーダ／デコーダ１４，１５が付加するデータ訂正用のＥＣＣビット数について説明する。
【００６４】
多値ブロックのデータ訂正用ＥＣＣビットを付加するＥＣＣエンコーダ／デコーダ１５は、２値ブロックのデータ訂正用ＥＣＣビットを付加するＥＣＣエンコーダ／デコーダ１４のＥＣＣビット数（たとえば、４ビット程度）よりも、付加するＥＣＣビット数（たとえば、６ビット程度）が多くなる構成となっている。
【００６５】
これにより、多値ブロックに記憶されるデータの信頼性を向上させ、２値ブロックに記憶されるデータと多値ブロックに記憶されるデータとの間の信頼性の差を少なくすることが可能となる。
【００６６】
それにより、本実施の形態によれば、ユーザデータ領域に格納されるデータを多値で記憶し、データの書き換えが頻繁に行われるシステム領域のデータを２値で記憶させることにより、低コストで信頼性の高い、大記憶容量のソリッドステートドライブ１を実現することができる。
【００６７】
また、前記実施の形態では、２値／多値テーブルＴ２の初期値は、たとえば、ユーザデータ領域のすべてのブロックを多値で使用するように設定し、システム領域のブロックを２値で使用するように設定する場合について記載したが、この初期設定は、任意に設定可能である。
【００６８】
たとえば、システム領域のブロックだけでなく、ユーザデータ領域における任意のブロックを２値で使用し、その他のブロックを多値で使用するようにしてもよいし、あるいは、すべてのブロックを２値や多値で使用するようにしてもよい。
【００６９】
前述したユーザデータ領域における任意のブロックを２値で使用する場合、この２値で使用されるブロックに電源遮断の際に揮発性メモリ３のユーザデータを書き込む記憶領域として使用する。
【００７０】
これにより、より高速にソリッドステートドライブ１の電源遮断することができる。これは、不揮発性半導体メモリを消去のブロック単位で分割した際に、上位ワード線は、下位ワード線よりもデータの書き込み速度が速くなるので、２値で使用するブロックは、多値で使用するブロックよりもデータ書き込み速度が速くなるためである。
【００７１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００７２】
本発明は、不揮発性半導体メモリを用いた記憶装置に適している。
【図面の簡単な説明】
【００７３】
【図１】本発明の一実施の形態によるソリッドステートドライブの構成例を示すブロック図である。
【図２】図１のソリッドステートドライブに設けられた不揮発性半導体メモリのメモリアレイの構成例を示す説明図である。
【図３】図１のソリッドステートドライブに設けられたコントローラの構成例を示すブロック図である。
【図４】図１のソリッドステートドライブに設けられた不揮発性半導体メモリに格納されたブロック管理テーブルの構成例を示す説明図である。
【符号の説明】
【００７４】
１  ソリッドステートドライブ
２  コントローラ
３  揮発性メモリ
４  電源保持用キャパシタ
５1 〜５4   不揮発性半導体メモリ
６1 〜６4   不揮発性半導体メモリ
７1 〜７4   不揮発性半導体メモリ
８1 〜８4   不揮発性半導体メモリ
９  ＭＰＵ
１０，１１  データ格納部
１２  書き込み／読み込み／消去制御部
１３  ページアドレス制御部
１４，１５  ＥＣＣエンコーダ／デコーダ
Ｈ  ホスト
Ｂ０〜Ｂ５  バス
ＭＴ１，ＭＴ２  メモリマット
ＢＴ  ブロック管理テーブル
Ｔ１  回数管理テーブル
Ｔ２  ２値／多値テーブル
Ｔ３  アドレス変換テーブル
【図１】
0005259138.tif 000002
【図２】
0005259138.tif 000003
【図３】
0005259138.tif 000004
【図４】
0005259138.tif 000005