(57)【特許請求の範囲】
【請求項１】
NANDフラッシュメモリデバイスにデータを格納する方法であって、
a)セルあたり単一ビット(SBC)ストレージモードで構成された第１サブディビジョンを持つように、およびセルあたり複数ビット(MBC)ストレージモードで構成された第２サブディビジョンを持つように、前記NANDフラッシュメモリデバイスをパワーアップするステップと、
b)前記NANDフラッシュメモリデバイスがパワーアップされた後に、コマンドに応答して内部フラッシュ動作を実行するステップと、
c)前記NANDフラッシュメモリデバイスの記憶容量を増やすために、前記コマンドにおける固有コマンドに応答して、前記第１サブディビジョンを前記SBCストレージモードから前記MBCストレージモードに変換するステップと、
d)前記第１サブディビジョンの前記変換をした後、プログラムコマンドに応答して、前記MBCストレージモードで構成された前記第１サブディビジョンに、前記データをプログラムするステップと、
を含む方法。
【請求項２】
前記第１サブディビジョンの前記変換するステップは、アイドル期間中に実行される、請求項1に記載の方法。
【請求項３】
前記第１および第２サブディビジョンは、ページである、請求項1に記載の方法。
【請求項４】
前記第１および第２サブディビジョンは、両方とも同一のブロック内にある、請求項3に記載の方法。
【請求項５】
変換する前記ステップは、前記第1サブディビジョンに対応するSBCプログラム/消去カウンタを再利用限度と比較するステップと、前記プログラム/消去カウンタが前記再利用限度未満である場合に前記第1サブディビジョンに対応するロックビットの状態をチェックするステップとを含み、前記ロックビットは、SBCストレージモードからMBCストレージモードへの変換を防ぐためのものである、請求項1から4のいずれか一項に記載の方法。
【請求項６】
前記SBCプログラム/消去カウンタは、前記第1サブディビジョンの予備データフィールドに格納される、請求項5に記載の方法。
【請求項７】
セルあたり複数ビット(MBC)ストレージモードおよびセルあたり単一ビット(SBC)ストレージモードのうちの1つでNANDフラッシュメモリデバイス内でデータを選択的にプログラムする方法であって、
a)データを受け取るステップと、
b)前記データの高信頼性レベルまたは低信頼性レベルを判定するステップと、
c)前記データが高信頼性であると判定される場合にSBCサブディビジョンに前記データを前記SBCストレージモードでプログラムするステップと、
d)前記データが低信頼性であると判定される場合にMBCサブディビジョンに前記データを前記MBCストレージモードでプログラムするステップと、
e) i) SBCサブディビジョンが利用可能でないとき、および、ii) SBCサブディビジョンを追加する必要があるとき、任意の個数のMBCサブディビジョンをSBCストレージモードに、変換するステップと
を含む方法。
【請求項８】
変換する前記ステップは、変換されたサブディビジョンを識別するストレージモードデータを前記NANDフラッシュメモリデバイスにプログラミングするステップを含む、請求項7に記載のデータを選択的にプログラムする方法。
【請求項９】
MBCストレージモードへのSBCサブディビジョンの変換を防ぐステップをさらに含む、請求項8に記載のデータを選択的にプログラムする方法。
【請求項１０】
変換を防ぐ前記ステップは、変換を防ぐ前記ステップのために使用されるロッキングデータをプログラミングするステップを含む、請求項9に記載のデータを選択的にプログラムする方法。
【請求項１１】
第1ストレージモードでデータを格納するための第1メモリブロックと、第2ストレージモードでデータを格納するための第2メモリブロックとを有するNANDフラッシュメモリアレイと、
第１プログラム命令に応答して前記第1ストレージモードでデータを格納するために前記第2メモリブロックを変換するための第１変換アルゴリズムを実行するとともに、第２プログラム命令に応答して前記第２ストレージモードでデータを格納するために前記第１メモリブロックを変換するための第２変換アルゴリズムを実行する、制御論理回路と
を含むフラッシュメモリデバイス。
【請求項１２】
前記第1ストレージモードでデータを格納する少なくとも１つの他のメモリブロックへ、前記第2メモリブロックに格納されたデータをプログラムするフラッシュメモリ回路網をさらに含む、請求項11に記載のフラッシュメモリデバイス。
【請求項１３】
前記第1ストレージモードは、セルあたり単一ビット(SBC)ストレージモードであり、前記第2ストレージモードは、セルあたり複数ビット(MBC)ストレージモードである、請求項12に記載のフラッシュメモリデバイス。
【請求項１４】
前記第1ストレージモードは、セルあたり複数ビット(MBC)ストレージモードであり、前記第2ストレージモードが、セルあたり単一ビット(SBC)ストレージモードである、請求項12に記載のフラッシュメモリデバイス。
【請求項１５】
NANDフラッシュメモリデバイスのサブディビジョンにデータをプログラムする方法であって、
第1ストレージモードで前記サブディビジョンにデータをプログラムするステップと、
前記サブディビジョンのプログラム/消去サイクルを監視するステップと、
前記サブディビジョンのプログラム/消去サイクルが所定の限度に達した場合、第2ストレージモードに前記サブディビジョンを変換するステップと、
を含み、
プログラムする前記ステップは、前記サブディビジョンのプログラム/消去サイクルに対応してカウンタを増加させるステップを含み、前記カウンタは、前記NANDフラッシュメモリデバイスに格納され、
前記第1ストレージモードは、セルあたり単一ビット(SBC)ストレージモードであり、前記第2ストレージモードは、セルあたり複数ビット(MBC)ストレージモードである、方法。
【請求項１６】
NANDフラッシュメモリデバイスのサブディビジョンにデータをプログラムする方法であって、
第1ストレージモードで前記サブディビジョンにデータをプログラムするステップと、
前記サブディビジョンのプログラム/消去サイクルを監視するステップと、
前記サブディビジョンのプログラム/消去サイクルが所定の限度に達した場合、第2ストレージモードに前記サブディビジョンを変換するステップと、
を含み、
プログラムする前記ステップは、前記サブディビジョンのプログラム/消去サイクルに対応してカウンタを増加させるステップを含み、前記カウンタは、前記NANDフラッシュメモリデバイスに格納され、
前記カウンタは、前記NANDフラッシュメモリデバイスの予備データフィールドに格納され、
前記サブディビジョンのプログラム/消去サイクルに対応して前記カウンタを増加させるステップは、変換する前記ステップの後にリセットされる、方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ダイナミックマルチモード動作を有する不揮発性メモリに関するものである。
【背景技術】
【０００２】
フラッシュメモリは、たとえばディジタルカメラおよびポータブルディジタル音楽プレイヤなどの消費者電子製品用のマスストレージとして幅広く使用されている、一般に使用されるタイプの不揮発性メモリである。広く入手可能なフラッシュメモリチップの密度は、1つのフラッシュチップのサイズが小さいので、人気のあるUSBフラッシュドライブでの使用に適した(現時点で)最大4GBとすることができる。
【０００３】
8メガピクセルディジタルカメラならびに音楽機能およびビデオ機能を有するポータブルディジタルエンターテイメントデバイスの出現は、単一のフラッシュメモリデバイスによって満足することのできない大量のデータを格納するための超大容量の需要を駆り立てた。したがって、複数のフラッシュメモリデバイスが、使用可能なストレージ容量を効果的に増やすためにメモリシステムに一緒に組み合わされる。たとえば、20GBのフラッシュストレージ密度が、そのような応用例に必要である場合がある。より高密度のシステムを、ハードディスクドライブ(HDD)応用例のために実現することができる。
【０００４】
図1は、従来技術の通常のフラッシュメモリの全般的なブロック図である。フラッシュメモリ10は、フラッシュ回路のさまざまな機能を制御する制御回路12などの論理回路網と、アドレス情報、データ情報、およびコマンドデータ情報を格納するレジスタと、必要なプログラム電圧および消去電圧を生成する高電圧回路と、メモリアレイ14にアクセスするコアメモリ回路とを含む。制御回路12は、コマンドデコーダと、読取り機能、プログラム機能、および消去機能などの内部フラッシュ動作を実行する論理とを含む。フラッシュメモリ10の図示の回路ブロックの機能は、当技術分野で周知である。当業者は、図1に示されたフラッシュメモリ10が、多数の可能な構成の中の1つの可能なフラッシュメモリ構成を表すことを理解することができる。
【０００５】
図1のフラッシュメモリ10のメモリセルアレイ14は、任意の個数のバンクからなり、この個数は、特定のフラッシュデバイスのために選択される設計パラメータである。図2は、図1のメモリセルアレイ14の1つのバンク20の編成を示す概略図である。バンク20は、k+1個のブロックに編成され、各ブロックは、i+1個のページからなる。kとiとの両方が、整数値である。各ページは、共通のワード線に結合されたメモリセルの行に対応する。ブロックのメモリセルの詳細な説明を続ける。
【０００６】
各ブロックは、直列に配置され、互いに電気的に結合されたi+1個までのフラッシュメモリセル22を有するNANDメモリセルストリングからなる。したがって、ワード線WL0からWLiまでは、メモリセルストリング内の各フラッシュメモリセルのゲートに結合される。信号SSL(ストリング選択線)に結合されたストリング選択デバイス24は、メモリセルストリングをビット線26に選択的に接続し、信号GSL(グラウンド選択線)に結合されたグラウンド選択デバイス28は、メモリセルストリングをVSSなどのソース線に選択的に接続する。ストリング選択デバイス24およびグラウンド選択デバイス28は、n-チャネルトランジスタである。
【０００７】
バンク20のすべてのブロックに共通するj+1個のビット線26があり、各ビット線26は、ブロック[0]から[k]までのそれぞれの1つのNANDメモリセルストリングに結合される。変数jは、整数値である。各ワード線(WL0からWLiまで)、SSL、およびGSL信号は、ブロック内の各NANDメモリセルストリング内の同一の対応するトランジスタデバイスに結合される。当業者が知っているとおり、あるワード線に沿ったフラッシュメモリセルに格納されるデータを、データのページと称する。
【０００８】
バンク20の外の各ビット線に結合されるのが、フラッシュメモリセルの1ページにプログラムされる書込みデータの1ページを格納するデータレジスタ30である。データレジスタ30は、フラッシュメモリセルの1ページから読み取られるデータをセンスするセンス回路をも含む。プログラミング動作中に、データレジスタは、データが選択されたワード線に結合されたフラッシュメモリセルに正しくプログラムされたことを保証するためにプログラム検証動作を実行する。あるブロック内のプログラミングは、通常、WL0に対応するページで始まり、現在のブロックを充てんするためにWLiまでシーケンシャルに進行する。代替案では、プログラミングが、WLiで始まり、WL0までシーケンシャルに進むことができる。次に、プログラミングは、新しいブロックのWL0に継続する。1つのデバイス内では、ブロックが、通常は順番にプログラムされる。
【０００９】
フラッシュメモリ10のフラッシュセルは、2つの異なるモードのうちの1つでデータを格納することができる。データを、セルあたり単一ビット(SBC)ストレージモードまたはセルあたり複数ビット(MBC)ストレージモードで格納することができる。SBCストレージモードでは、情報の正確に1つのビットが、2つの可能な状態のうちの1つを表すために1つのセルに格納される。MBCストレージモードでは、2つのビットが、4つの可能な状態のうちの1つを表すために1つのセルに格納される。もちろん、3ビット以上のビットを1つのセルに格納することができるが、2ビットを1つのセルに格納させる例が、これ以降で使用される。MBCストレージモード(セルあたり2ビット以上)でデータを格納することの利益は、同一個数のセルを使用する時に、SBCストレージに対してストレージ容量を少なくとも2倍にすることである。フラッシュメモリ10のメイン回路は、SBCストレージモードまたはMBCストレージモードでデータを格納する時に、実質的に同一である。したがって、フラッシュメモリ製造業者は、製造プロセス中にマスクオプションを適用して、SBC固有アルゴリズムまたはMBC固有アルゴリズムのいずれかを実行するようにフラッシュメモリ10を構成する。というのは、フラッシュ回路が、SBCとMBCとの読取り動作およびプログラム動作の間で異なって制御されるからである。
【００１０】
図3に、SBCストレージモードでの消去されるメモリセルおよびプログラムされるメモリセルのしきい電圧(Vt)分布グラフを示す。プロセス変動および電圧供給変動に起因して、消去しきい電圧およびプログラムしきい電圧は、ある電圧範囲の中に分布する。図3に示されているように、消去されるメモリセルは、-3Vと-1Vとの間の負のしきい電圧を有し、プログラムされるメモリセルは、1Vと3Vとの間の正のしきい電圧を有する。この範囲は、メモリセルの所望のしきい電圧に依存する。しきい電圧範囲は、特定のフラッシュメモリデバイス内で使用できる可能なしきい電圧の例示であるが、当業者は、消去されるメモリセルおよびプログラムされるメモリセルについて使用するためのしきい電圧の選択が、フラッシュメモリデバイスの設計および製造プロセスに依存することを理解することができる。当業者は、異なるフラッシュデバイスが、特定の設計または応用に適するために異なるしきい電圧範囲を有することを理解することができる。
【００１１】
図4に、MBCストレージモードでの消去されるメモリセルおよびプログラムされるメモリセルのしきい電圧(Vt)分布グラフを示す。消去されるメモリセルは、負のしきい電圧を有し、それぞれが異なる状態に対応する、メモリセルが格納する正のしきい電圧の3つの範囲がある。好ましくは、各状態のしきい電圧の最小範囲および最大範囲が最小化されると同時に、範囲の間の間隔が最大化されなければならない。
【００１２】
フラッシュメモリデバイスが、もはや信頼性のある形でデータを格納するのに使用できなくなる前に、限られた回数の消去-プログラムサイクルを有することが、周知である。より具体的には、フラッシュメモリセルは、プログラム/消去サイクルウェアリングの対象であり、このウェアリングは、累積的なプログラム動作および消去動作に起因するフラッシュメモリセルの徐々の劣化である。メモリブロックが、データを用いてプログラムされる前にまず必ず消去され、したがって、このサイクルを、プログラムサイクルと消去サイクルとの両方と称することができることに留意されたい。すべての現在既知のフラッシュメモリが、ブロック消去のために構成され、これは、ブロック内のデータの1ページだけが変更される場合であっても、そのページを含むブロック全体が消去され、変更されたページおよび変更されないページを用いて再プログラムされることを意味することが、当業者の理解である。そのような累積的なプログラム動作および消去動作の影響は、最適パラメータを超えるメモリセルのプログラム特性および消去特性の変更である。メモリセルが劣化する時に、所望のしきい電圧に対するより高いプログラム電圧および消去電圧が、メモリセルのプログラムまたは消去に必要である。結果的に、メモリセルは、データ(すなわち、所望のしきい電圧)を正しく保持することができなくなる。たとえば、現在のSBCフラッシュメモリの通常の定格消去-プログラムサイクルは約100000サイクルである。しかし、現在のMBCフラッシュメモリは、より少ない定格限界10000サイクルを有する。上で述べた消去-プログラムサイクル限度は、例にすぎないが、MBC消去-プログラムサイクルが、SBC消去-プログラムサイクルよりかなりの倍率だけ少ないことは、よく理解されている。
【００１３】
現在、入手可能なほとんどのフラッシュメモリは、そのチップサイズに対する相対的な大きいストレージ密度に起因して、MBCタイプを有する。これは、ほとんどの消費者応用例に適切であるが、10000サイクルプログラム-消去限度は、データプログラミングおよび消去が頻繁である他の応用例には不十分である可能性がある。したがって、MBCフラッシュメモリが、その10000サイクル寿命に達した時に、そのメモリは、もはや使用可能ではなく、破棄されなければならない。この問題は、より頻繁なプログラム-消去サイクルがある、HDD応用例などの商用応用例についてよりクリティカルである。HDD応用例は、ほとんどの消費者応用例より高いデータ完全性を必要とするので、MBCフラッシュメモリは、その相対的に短い10000サイクル寿命に起因して、適切ではない。
【先行技術文献】
【特許文献】
【００１４】
【特許文献１】米国特許出願第11/354,023号明細書
【特許文献２】米国特許出願第11/496,278号明細書
【発明の概要】
【発明が解決しようとする課題】
【００１５】
したがって、消費者応用例と商業応用例との両方に適する、延ばされた寿命を有するフラッシュメモリおよびフラッシュメモリシステムを提供することが望ましい。
【課題を解決するための手段】
【００１６】
以前のフラッシュメモリシステムの少なくとも1つの不利益を事前に除去し、または軽減することが、本実施形態の一態様である。
【００１７】
第1の態様では、メモリアレイを有するフラッシュメモリデバイスが提供される。このフラッシュメモリデバイスは、コマンドデコーダと、制御論理回路と、メモリセルをプログラムするためのフラッシュメモリ回路網とを含む。コマンドデコーダは、外部プログラムコマンドに応答してセルあたり複数ビット(MBC)プログラムコマンドおよびセルあたり単一ビット(SBC)プログラムコマンドのうちの1つを発行する。制御論理回路は、セルあたり複数ビットプログラムコマンドまたはセルあたり単一ビットプログラムコマンドのいずれかに応答してプログラミングアルゴリズムを実行する。フラッシュメモリ回路網は、プログラミングアルゴリズムに応答してメモリアレイのメモリセルをプログラムする。本態様の実施形態によれば、コマンドデコーダは、SBCプログラムコマンドを発行するSBCコマンドデコーダと、MBCプログラムコマンドを発行するMBCコマンドデコーダとを含む。
【００１８】
本態様のもう1つの実施形態では、メモリアレイは、MBCプログラムコマンドに応答してMBCストレージモードでデータを格納するように構成された第1サブディビジョンと、SBCプログラムコマンドに応答してSBCストレージモードでデータを格納するように構成された第2サブディビジョンとを含む。第1サブディビジョンおよび第2サブディビジョンは、メモリブロックまたはメモリページを含むことができる。各サブディビジョンは、MBCストレージモードまたはSBCストレージモードを指定するためのモードタグに関連し、各サブディビジョンは、メモリアレイ内の1つのメモリページである。
【００１９】
第2の態様では、フラッシュメモリデバイスにデータを格納する方法が提供される。この方法は、フラッシュメモリデバイスのサブディビジョンを第1ストレージモードから第2ストレージモードに変換するステップであって、そのサブディビジョンが、第1ストレージモードおよび第2ストレージモードのいずれかを示す対応するモードタグを有する、変換するステップと、サブディビジョンおよび代替サブディビジョンのうちの1つにデータをプログラムするステップとを含む。本態様の実施形態によれば、第1ストレージモードは、セルあたり複数ビット(MBC)ストレージモードであり、第2ストレージモードは、セルあたり単一ビット(SBC)ストレージモードであり、変換するステップは、所定の判断基準に応答して実行される。所定の判断基準は、MBCプログラム/消去限度であり、変換するステップは、サブディビジョンに対応するプログラム/消去カウンタをMBCプログラム/消去限度と比較するステップを含む。プログラムするステップは、プログラム/消去カウンタが所定のMBCプログラム/消去限度未満である場合にサブディビジョンにデータをプログラムするステップと、プログラム/消去カウンタが少なくとも所定のMBCプログラム/消去限度である場合に代替サブディビジョンにデータをプログラムするステップとを含む。プログラムするステップは、データが代替サブディビジョンにプログラムされる場合にサブディビジョンを消去するステップ、サブディビジョンに対応するモードタグを、第2ストレージモードを示す状態にセットするステップ、またはプログラム/消去カウンタをリセットするステップを含むことができる。
【００２０】
本態様のもう1つの実施形態では、所定の判断基準は、データの特定のプロファイルであり、データの特定のプロファイルは、データファイルタイプのセットを含む。プログラムするステップは、データが特定のプロファイルと一致するプロファイルを有する場合にサブディビジョンにデータをプログラムするステップと、プロファイルが特定のプロファイルと一致しない場合に代替サブディビジョンにデータをプログラムするステップとを含む。さらなる実施形態では、サブディビジョンは、ブロックを含み、ブロックは、所定の個数のページを含み、あるいは、サブディビジョンは、ページを含み、所定の個数のページが、1つのブロックに含まれる。もう1つの実施形態では、第1ストレージモードは、セルあたり単一ビット(SBC)ストレージモードであり、第2ストレージモードは、セルあたり複数ビット(MBC)ストレージモードであり、変換するステップは、サブディビジョンに対応するSBCプログラム/消去カウンタを再利用限度と比較するステップと、プログラム/消去カウンタが再利用限度未満である場合にサブディビジョンに対応するロックビットの状態をチェックするステップとを含む。変換するステップは、ロックビットの状態が偽である場合に、サブディビジョンに対応するモードタグの状態を変更するステップをさらに含む。変換するステップは、モードタグビットの状態が変更された後にロックビットを真にセットするステップをさらに含む。
【００２１】
第3の態様では、マルチモードフラッシュメモリデバイスが提供される。このマルチモードフラッシュメモリデバイスは、セルあたり単一ビット(SBC)ストレージモードでSBCデータを格納し、セルあたり複数ビット(MBC)ストレージモードでMBCデータを格納するフラッシュメモリセルを有するメモリアレイを含む。本態様の実施形態によれば、メモリアレイの第1ブロックは、SBCデータを格納し、メモリの第2ブロックは、MBCデータを格納し、メモリアレイのブロック内の第1ページは、SBCデータを格納し、メモリアレイのブロック内の第2ページは、MBCデータを格納し、第1ページおよび第2ページは、それぞれモードタグを格納し、モードタグは、SBCデータまたはMBCデータの存在を示す論理状態を有する。
【００２２】
第4の態様では、セルあたり複数ビット(MBC)ストレージモードおよびセルあたり単一ビット(SBC)ストレージモードのうちの1つでフラッシュメモリシステム内でデータを選択的にプログラムする方法が提供される。この方法は、データを受け取るステップと、データの高信頼性レベルまたは低信頼性レベルを判定するステップと、データが高信頼性であると判定される場合にデータをSBCストレージモードでプログラムするステップと、データが低信頼性であると判定される場合にデータをMBCストレージモードでプログラムするステップとを含む。本態様の実施形態では、データをSBCストレージモードでプログラムするステップは、データをフラッシュメモリデバイスのメモリアレイ内の選択されたSBCページにプログラムするステップと、選択されたSBCページのそれぞれに対応するモードタグを第1状態にセットするステップとを含む。さらに、データをMBCストレージモードでプログラムするステップは、データをフラッシュメモリデバイスのメモリアレイ内の選択されたMBCページにプログラムするステップと、選択されたMBCページのそれぞれに対応するモードタグを第2状態にセットするステップとを含む。
【００２３】
第5の態様では、セルあたり複数ビット(MBC)ページおよびセルあたり単一ビット(SBC)ページを有するフラッシュメモリシステムからデータを読み取る方法が提供される。この方法は、フラッシュメモリアレイの少なくとも1つのページを読み取るための読取りアドレスを受け取るステップと、少なくとも1つのページに対応するモードタグが第1論理状態である場合に、読取りアドレスでMBC読取り動作を実行するステップと、少なくとも1つのページに対応するモードタグが第2論理状態である場合に、読取りアドレスでSBC読取り動作を実行するステップとを含む。この方法は、読取りアドレスを受け取る前に、フラッシュメモリアレイの各ページに対応するモードタグを用いてアドレスマッピングテーブルを初期化するステップを含む。本態様の実施形態では、初期化するステップは、フラッシュメモリアレイをパワーアップするステップと、フラッシュメモリアレイの各ページに格納されたモードタグを読み取るステップと、フラッシュメモリアレイの各ページに対応する論理アドレスエントリと共にモードタグを格納するステップとを含む。モードタグを読み取るステップは、フラッシュメモリアレイの各ページ内のモードタグを読み取るためにSBC読取り動作を実行するステップを含む。もう1つの実施形態では、受け取るステップは、フラッシュコントローラからフラッシュメモリデバイスに外部読取りコマンドを発行するステップを含み、外部読取りコマンドは、読取りアドレスと、その読取りアドレスに対応するモードタグビットの論理状態とに応答して生成される。MBC読取り動作を実行するステップは、フラッシュメモリデバイス内で外部読取りコマンドをデコードするステップと、内部MBC読取りコマンドおよび内部SBC読取りコマンドのうちの1つを発行するステップとを含む。
【００２４】
説明される実施形態の他の特徴および態様は、添付図面と共に本発明の特定の実施形態の次の説明を再検討すれば、当業者に明白になる。
【００２５】
実施形態を、一例として、添付図面を参照して説明する。
【図面の簡単な説明】
【００２６】
【図１】従来技術のフラッシュメモリデバイスを示すブロック図である。
【図２】図1のフラッシュメモリデバイスの1つのメモリバンクの編成を示す概略図である。
【図３】セルあたり単一ビットストレージモードでの消去されるメモリセルおよびプログラムされるメモリセルのしきい電圧(Vt)分布グラフを示す図である。
【図４】セルあたり複数ビットストレージモードでの消去されるメモリセルおよびプログラムされるメモリセルのしきい電圧(Vt)分布グラフを示す図である。
【図５】マルチドロップフラッシュメモリシステムを示すブロック図である。
【図６】直列構成されたフラッシュメモリシステムを示すブロック図である。
【図７】マルチモードフラッシュメモリデバイスの寿命を延ばす方法を示す流れ図である。
【図８Ａ】MBCストレージモードとSBCストレージモードとの間で変換されるメモリブロックを示す図である。
【図８Ｂ】MBCストレージモードとSBCストレージモードとの間で変換されるページを示す図である。
【図９】メモリアレイの1ページに関する割り振られるフィールドを示す概略図である。
【図１０】1つのマルチモードフラッシュメモリデバイスを含むフラッシュメモリシステムを示すブロック図である。
【図１１】図10のフラッシュメモリシステムを動作させる方法を示す流れ図である。
【図１２】モードタグ情報を用いてアドレスマッピングテーブルを初期化する方法を示す流れ図である。
【図１３】マルチモードフラッシュメモリデバイスの寿命を延ばす方法を示す流れ図である。
【図１４】MBCおよびSBCのストレージモードデータのユーザ選択可能なプログラミングの方法を示す流れ図である。
【図１５】MBCストレージモードサブディビジョンをSBCストレージモードサブディビジョンに自動的に変換する方法を示す流れ図である。
【図１６】SBCストレージモードサブディビジョンを再利用する方法を示す流れ図である。
【図１７】マルチモードフラッシュメモリデバイスからデータを読み取る方法を示す流れ図である。
【発明を実施するための形態】
【００２７】
一般に、少なくともいくつかの例の実施形態は、フラッシュメモリデバイスの寿命を延ばす方法およびシステムを提供する。フラッシュメモリデバイスは、セルあたり単一ビット(SBC)ストレージモードまたはセルあたり複数ビット(MBC)ストレージモードでデータを格納するように動的に構成可能であり、SBCデータとMBCデータとの両方が同一のメモリアレイ内に共存するようになっている。そのようなメモリデバイスを、マルチモードフラッシュメモリデバイスと称する。メモリの各ページに格納される1つまたは複数のタグビットが、対応するメモリブロック内にデータを格納するのに使用されるストレージモードのタイプを示すのに使用される。コントローラが、マルチモードフラッシュメモリデバイスの寿命を最大にするために、ストレージモードを選択的に変更するために各ページに対応するプログラム-消去サイクルの回数を監視する。
【００２８】
現在説明される実施形態は、図1に示されたものなどの単一のMBCフラッシュメモリデバイスならびに図5および6に示されたものなどのMBCフラッシュメモリデバイスのシステムに適用可能である。
【００２９】
図5は、ホストシステム102に一体化されたフラッシュメモリシステム100のブロック図である。フラッシュメモリシステム100は、ホストシステム102と通信するフラッシュメモリコントローラ104と、複数のマルチモードフラッシュメモリデバイス106とを含む。ホストシステム102は、マイクロコントローラ、マイクロプロセッサ、またはコンピュータシステムなどの処理デバイスを含む。図5のフラッシュメモリシステム100は、1つのチャネル108を含むように構成されるが、マルチモードフラッシュメモリデバイス106は、チャネル108に並列に結合される。当業者は、メモリシステム100が、より多数またはより少数のメモリデバイスをそれに結合され得ることを理解することができる。
【００３０】
チャネル108は、1組の共通バス(図示せず)を含み、この共通バスは、すべてのメモリデバイス106に結合されるデータ線および制御線を含む。図示されていないが、各メモリデバイスは、フラッシュメモリコントローラ104によって供給されるめいめいのチップ選択信号を用いてイネーブル/ディスエーブルされる。フラッシュメモリコントローラ104は、ホストシステム102の動作に基づいて、選択されたメモリデバイス106にチャネル108を介してコマンドおよびデータを発行する責任を負う。メモリデバイスから読み取られたデータは、チャネル108を介してフラッシュメモリコントローラ104およびホストシステム102に戻って転送される。フラッシュメモリシステム100は、一般に、マルチドロップ構成と呼ばれ、この構成では、マルチモードフラッシュメモリデバイス106が、チャネル108に関して並列に結合される。当業者は、フラッシュメモリコントローラ104が、複数のチャネルを有することができ、各チャネルが、マルチドロップ構成で結合されたフラッシュメモリデバイス106を有することを理解することができる。各マルチモードフラッシュメモリデバイス106は、前に図2に示されたバンクメモリ編成を有するNANDフラッシュメモリデバイスとして実施される。フラッシュメモリデバイス106は、同一の容量または異なる容量を有することができる。
【００３１】
図6は、直列結合されたメモリデバイスを有するフラッシュメモリシステムのブロック図である。フラッシュメモリシステム120は、ホストシステム124と通信するフラッシュメモリコントローラ122と、4つの直列結合されたマルチモードフラッシュメモリデバイス126とを含む。4つのフラッシュメモリデバイスのそれぞれは、メモリデバイスの間の動作を容易にする入出力回路を有する。そのようなフラッシュメモリデバイスの例が、その内容が参照によって本明細書に組み込まれている、2005年12月30日に出願した本願と同一の譲受人が所有する米国特許出願第11/354,023号および2006年7月31日に出願した本願と同一の譲受人が所有する米国特許出願第11/496,278号に記載されている。
【００３２】
一実施形態によれば、マルチモードフラッシュメモリデバイスは、デフォルトで、MBCストレージモードでデータを格納するようにセットされる。各マルチモードフラッシュメモリデバイスの寿命は、寿命延長方式を実行することによって延ばされる。図7は、寿命延長方式を示す流れ図である。
【００３３】
第1ステップは、通常はプログラミング命令に応答して実行される、セル変換200である。MBCストレージモードで構成されたすべてのサブディビジョンのプログラム/消去サイクルが、監視され、所定の限度に達するすべてのサブディビジョンが、SBCストレージモードに自動的に変換される。サブディビジョンは、たとえばメモリブロックまたはページなど、変換可能であるセルの最小の単位またはグループ化である。これは、所定の限度に達するすべてのMBCストレージモードサブディビジョンが、もはや信頼できる形でデータを格納しないが、これらを、セットされた回数のプログラム/消去サイクルについてSBCストレージモードでデータを格納するのに使用できるという事実に起因する。セル変換アルゴリズムは、サブディビジョンに格納されるデータがもはや保持されない場合に、そのサブディビジョンをSBCストレージモードからMBCストレージモードに変換もする。
【００３４】
続いて、ステップ202で、データを、選択されたストレージモードに従ってプログラムする。デフォルトで、メモリバンクの全サブディビジョンが、MBCストレージモードでデータを格納するようにセットされる。しかし、ユーザが、より高いストレージ信頼性を必要とするデータを格納することを選ぶ場合に、少なくとも要求された個数のサブディビジョンが、SBCストレージモードでデータファイルを格納するために割り振られ、セットされる。フラッシュメモリコントローラ(たとえば、104または122)を、より高いストレージ信頼性を要求するものとして特定のデータファイル拡張子タイプを認識するように構成することができる。たとえば、Windows(登録商標)オペレーティングシステムプラットフォーム内の「.exe」を伴う実行可能アプリケーションは、SBCストレージモードで格納されるが、「.avi」拡張子を伴うビデオデータファイルは、より高いストレージ信頼性を要求しない。したがって、SBCストレージモードで構成されたサブディビジョンは、MBCストレージモードで構成されたサブディビジョンより長い寿命を有する。
【００３５】
寿命延長方式の上で述べたステップの任意の1つの使用は、マルチモードフラッシュメモリデバイスの寿命を延ばす。しかし、最大の寿命延長は、両方のステップがマルチモードフラッシュメモリデバイスの動作中に使用される時に達成される。
【００３６】
図8Aは、サブディビジョンが現在はメモリブロックである場合の、MBCストレージモードからSBCストレージモードへのおよびその逆のメモリのサブディビジョンの変換をグラフ的に示す。図示を簡単にするために、図8(a)のマルチモードフラッシュメモリデバイス300は、4つのメモリブロック302からなり、4つのメモリブロックのそれぞれは、4つのページ304を含む。メモリデバイス300が、そのブロック302のすべてを当初にMBCストレージモードでデータを格納するようにセットされ、ユーザまたは前に図7で説明した自動セル変換アルゴリズムのいずれかにかけられたと仮定する。したがって、例によって、マルチモードフラッシュメモリデバイス300は、図8(a)に示されているようにSBCページおよびMBCページの構成を有し、ここで、陰付きのブロックは、SBCストレージモードでデータを格納するようにセットされ、陰なしのブロックは、MBCストレージモードでデータを格納するようにセットされる。
【００３７】
図8(b)に、ページ304が変換された後のマルチモードフラッシュメモリデバイス300のマッピングを示す。第1の例では、ページ306、308、310、および312を含むMBCストレージモードブロックが、プログラム/消去サイクルの所定の回数に達したことが判定されている。したがって、これらは、SBCストレージモードに変換される。プログラム/消去サイクルは、ブロック302内のページ304ごとに監視され、ブロック変換は、ページのうちの少なくとも1つが所定の回数に達した時に実行される。
【００３８】
第2の例では、ページ314、315、316、および317を含むSBCストレージモードブロックが、もはやデータを格納しないと判定されている。これは、その中のデータが消去され、他のデータがその中に格納されない時に判定することができる。SBCページ314、315、316、および317のSBCプログラム/消去サイクルの回数がチェックされ、それらのめいめいのSBCプログラム/消去サイクルのうちの少なくとも1つが所定の限度に達しているので、ブロック全体が、MBCストレージモードに戻って変換される。MBCからSBCストレージモードへおよびSBCからMBCストレージモードへの変換に関する特定の詳細は、後で述べる。
【００３９】
図8Aには、SBCストレージモードとMBCストレージモードとの間のサブディビジョンに基づくブロックの変換が示されている。図8Bには、SBCストレージモードとMBCストレージモードとの間でのサブディビジョンに基づくページの変換が示されている。図8(c)に示されているように、ページ318および320は、MBCストレージモードでデータを格納するようにセットされ、ページ322および324は、SBCストレージモードでデータを格納するようにセットされる。第1の例では、プログラム/消去サイクルを監視することによって、ページ318と320との両方が所定のMBCプログラム/消去サイクル限度に達したことが判定される。したがって、SBCストレージモードへの個々のページの変換が実行される。第2の例では、プログラム/消去サイクルを監視することによって、ページ322と324との両方が所定の限度に達したことが判定される。したがって、MBCストレージモードへの個々のページの変換が実行される。
【００４０】
メモリデバイス300内の任意のブロック302のストレージモードの判定は、ページ304のうちの1つに格納されるモードタグ(少なくとも1ビット)をチェックすることによって達成される。これは、メモリデバイス300が、選択されたブロック302に対して正しいプログラミング動作および読取り動作を実行することを可能にする。図9は、特にその割り振られたフィールドを示す、ページ304の概略図である。ページ304は、ユーザデータフィールド350および予備データフィールド352を含む。ユーザデータフィールド350は、ユーザから受け取られたデータを格納するが、予備データフィールド352は、フラッシュデバイスまたはフラッシュメモリコントローラによる使用のために予約される。現在の例では、ユーザデータフィールド350は、サイズにおいて2KBであり、予備データフィールド352は、サイズにおいて64Bである。予備データフィールド352では、1つまたは複数のビットが、ストレージモードタグ354として指定され、複数のビットが、ページに対して実行されるMBCプログラム/消去サイクルの数を追跡するためのプログラム/消去サイクルカウンタ356として指定される。
【００４１】
SBCカウンタ358は、SBCからMBCへの変換および後続のMBCからSBCへの変換をサポートするために、ページに対して実行されるSBCプログラム/消去サイクルの総数を追跡するために含まれる。1つの例の応用例は、SBCストレージモードを使用して高速でデータをプログラムし、その後、アイドル期間中にメモリ容量を改善するために後にMBCストレージモードに変換することである。オプションのロックビット360を、SBCストレージモードページがMBCストレージモードに変換されるのを防ぐために設けることができる。この特徴のさらなる詳細は、後で述べる。メモリブロック302は、任意の個数のページ304を含むが、ページ304のうちの任意の1つまたは複数を、メモリブロック302に対応するタグビット、SBCカウンタ値、MBCカウンタ値、およびオプションのロックビットを格納するために選択することができる。
【００４２】
モードタグ354は、使用すべき指定された読取りアルゴリズム、プログラムアルゴリズム、および消去アルゴリズムを判定するためにマルチモードフラッシュメモリデバイス300によって使用される。前に述べたように、特定の電圧レベルおよび制御信号のタイミングをセットすることを伴う読取りアルゴリズムおよびプログラムアルゴリズムは、SBCストレージモードおよびMBCストレージモードで格納されるデータについて異なる。そのような相違は、当業者に周知である。具体的に言うと、読み取られるかプログラムされるサブディビジョン(たとえば、ブロックなど)が、それに対応するモードタグ354を特定の論理状態にセットされている場合に、フラッシュデバイスは、MBCストレージモードアルゴリズムを実行する。そうでない場合には、フラッシュデバイスは、SBCストレージモードアルゴリズムを実行する。SBCストレージモードおよびMBCストレージモードに固有のアルゴリズムの実行は、マルチモードフラッシュメモリデバイスのコマンドデコーダおよび論理回路によって支配される。
【００４３】
いくつかの実施形態で、マルチモードフラッシュメモリデバイスは、SBCストレージモードとMBCストレージモードとの両方に固有の動作を実行するのに必要なすべての回路および制御論理を含む。MBCフラッシュメモリデバイスが、通常、SBCフラッシュメモリデバイスによって使用される回路のすべてを含むことに留意されたい。専用MBCフラッシュメモリデバイスと専用SBCフラッシュメモリデバイスとの間の主な相違は、制御回路網およびアルゴリズムを実行するための論理回路である。
【００４４】
図10は、1つのマルチモードフラッシュメモリデバイスを含むフラッシュメモリシステムのブロック図である。フラッシュメモリシステム400は、フラッシュメモリコントローラ402およびマルチモードフラッシュメモリデバイス404を含む。図示の便宜上、1つのデバイス404だけが示されているが、システム400は、同一チャネルに結合された任意の個数のデバイス404を含むことができ、システム400は、任意の個数のチャネルを含むことができる。フラッシュメモリコントローラ402およびマルチモードフラッシュメモリデバイス404の詳細をこれから説明する。
【００４５】
フラッシュメモリコントローラ402の通常のコンポーネントは、論理-物理アドレストランスレータ406であり、この論理-物理アドレストランスレータ406は、ホストシステムによって供給される各論理アドレスをマルチモードフラッシュメモリデバイス内の対応する物理アドレスにマッピングする責任を負う。当業者によって了解されるように、アドレスマッピングは、データがウェアレベリング動作を実施するために移動されるか再プログラムされる場合に、データの論理アドレスがメモリアレイ内の実際の物理位置を一貫してポイントすることを保証するのに使用される。また、トランスレータは、一般に、アドレスマッピングテーブルとして実施される。本実施形態によれば、マルチモードフラッシュメモリデバイス404の各サブディビジョンの各メモリタグ(MODE)が、入手され、それに対応する論理アドレスエントリと共にマッピングテーブルに格納される。サブディビジョンがブロックである場合には、そのブロックに対応する論理アドレスの対応するモードタグが格納される。その代わりに、サブディビジョンがページである場合には、各ページのモードタグが入手され、格納される。したがって、フラッシュメモリコントローラ402は、選択されたアドレスに関連するストレージモードのタイプに関する情報と共に、外部コマンド(CMD)を発行する。
【００４６】
図10に示されたマルチモードフラッシュメモリデバイス404は、コマンドデコーダ408および制御論理410からなるマルチモード制御回路405と、フラッシュメモリ回路網412と、メモリアレイ414とを含む。フラッシュメモリ回路網412およびメモリアレイ414は、図を明瞭にするために単純化されているが、当業者は、これらの回路ブロックが、マルチモードフラッシュメモリデバイス404の正しい動作を保証するのに必要なすべてのコンポーネントを含むことを理解するに違いない。コマンドデコーダ408は、フラッシュメモリコントローラ402によって発行された外部コマンドCMDを受け取り、そのコマンドをデコードし、対応する内部制御コマンドを制御論理410に発行する。当業者は、外部コマンドCMDが、実行される動作のタイプ、プログラムすべきユーザデータ、およびデータがそこに書き込まれるまたはデータがそこから読み取られるアドレスなどの情報を含むことを理解することができる。制御論理410は、プログラム検証動作などのすべての補足の動作を含む、すべての標準的なSBCおよびMBCの読取り動作およびプログラム動作を実行するための論理を有する状態機械である。制御論理410は、後で説明するように、マルチモードフラッシュメモリデバイスに独自の論理機能を実行するための論理回路網をも含む。
【００４７】
コマンドデコーダ408は、MBCコマンドデコーダ416、SBCコマンドデコーダ418、および共通コマンドデコーダ420を含む。MBCコマンドデコーダ416は、MBC読取りコマンドRD_MBCおよびMBCプログラムコマンドPGM_MBCなど、MBCストレージモード固有コマンドを発行する。SBCコマンドデコーダ418は、SBC読取りコマンドRD_SBCおよびSBCプログラムコマンドPGM_SBCなど、SBCストレージモード固有コマンドを発行する。共通デコーダ420は、消去コマンドなど、SBCストレージモードまたはMBCストレージモード用に構成されたメモリサブディビジョンに固有ではないコマンドを発行する。3つのサブコマンドデコーダ416、418、および420は、コマンドデコーダ408によって発行されるコマンドのタイプの分類を示すために別個の回路ブロックとして図示され、必ずしも、コマンドを生成するのに使用される特定の回路または論理のグループ化を示すものではない。
【００４８】
フラッシュメモリシステム400の全般的動作を、これから、図11の流れ図を参照して説明する。図示の動作方法のステップを実行する前に、モードタグ情報が、既にアドレストランスレータ406にロード済みであると仮定する。次に、ステップ450で、ホスト要求を受け取り、このホスト要求は、たとえば読取り要求または書込み要求を含むことができる。この要求は、マルチモードフラッシュメモリデバイス404にデータを書き込むための論理アドレスまたはそれからデータを読み取るための論理アドレスを含む。ステップ452で、フラッシュメモリコントローラ402が、アドレスマッピングテーブルをルックアップし、要求された論理アドレスおよびアドレスマッピングテーブル内の対応するモードタグの状態に基づいて、要求されるストレージモード動作の必要なタイプ(SBCストレージモード対MBCストレージモード)に関する表示と共に適当なコマンドCMDを生成する。ステップ454で、コマンドデコーダ408によって受け取られたCMDコマンドが、デコードされ、SBCストレージモードまたはSBCストレージモードのいずれかの読取り/プログラムコマンドが、MBCコマンドデコーダ416またはSBCコマンドデコーダ418によって発行される。もちろん、CMDコマンドを、共通コマンドデコーダ420によって発行される消去動作などの非ストレージモード固有コマンドとすることができる。ステップ456で、制御論理410が、要求されたアルゴリズムを実行し、正しい形で必要なマルチモードフラッシュメモリ回路網412を制御する。
【００４９】
マルチモードフラッシュメモリデバイス404によって実行されるすべての動作の前に、フラッシュメモリコントローラ402のアドレスマッピングテーブルが、モードタグを用いて初期化される。これは、フラッシュメモリシステム400のパワーアップ中など、実行されるユーザ動作がない時間中に行われることが好ましい。図12は、アドレスマッピングテーブルを初期化する方法を示す流れ図である。ステップ500で、フラッシュメモリシステム400がパワーアップされる。次に、ステップ502で、フラッシュメモリデバイス404が、そのメモリアレイをスキャンして、そのタグビットのすべての論理状態を査定する。これは、フラッシュメモリデバイス404内のすべてのページの読取り動作を実行し、モードタグ情報(MODE)だけをフラッシュメモリコントローラ402に供給することによって行われる。データのページ全体が同時に読み出される場合に、タグビットだけが使用され、ページから読み出された残りのデータは、無視される。次に、ステップ504で、アドレスマッピングテーブルにMODEタグデータを投入する。
【００５０】
速度を最大にし、モードタグ読出プロセスを単純にするために、すべてのページが、SBCストレージモード読出アルゴリズムを使用して読み出される。より具体的には、SBC読取りアルゴリズムが、タグビットの消去状態の存在または不在を検出する。2つの2進論理状態を使用して、サブディビジョン(すなわち、たとえばブロックまたはページ)のSBCストレージモード構成またはMBCストレージモード構成を判定することができる。好ましくは、フラッシュメモリデバイスは、製造/テスト中に、そのすべてのモードタグビットを、データがMBCストレージモードでプログラムされなければならないことを示す1つの論理状態(消去状態)にセットさせるように事前にプログラムされる。標準動作中に、フラッシュメモリデバイス404は、プログラム動作および消去動作を受け、これによって、最終的に、メモリのページであれブロックであれ、少なくとも1つのサブディビジョンが、そのモードタグを変更される。
【００５１】
図13は、モードタグの状態を自動的に変更することによって、マルチモードフラッシュメモリデバイス400の寿命を延ばす方法を示す流れ図である。この方法は、モードタグが変更される前の特定の判断基準または条件の概要を示す。この方法は、ステップ550で開始され、ここで、データが、マルチモードフラッシュメモリデバイスにプログラムされる。マルチモードフラッシュメモリデバイスのメモリアレイ内にSBCストレージモードサブディビジョンおよびMBCストレージモードサブディビジョンの混合物があると仮定する。したがって、ステップ550では、SBCプログラミング動作またはMBCプログラミング動作が実行される。
【００５２】
ステップ552で、メモリアレイの各サブディビジョンのプログラムサイクル数を、プログラム/消去サイクルの後に監視する。その代わりに、監視を、プログラム/消去サイクルの直前に行うことができる。メモリのサブディビジョンに対するすべてのプログラム動作に、ある点で消去動作が先行し、したがって、消去サイクルまたはプログラムサイクルの個数が、実質的に同一であることに留意されたい。アドレスマッピングテーブルは、各サブディビジョンのプログラム/消去カウンタを含むことができ、このカウンタは、当初に、ページの予備データフィールド(352)に格納された対応するカウンタ値を投入される。カウンタ値を、システムのパワーアップ中にロードし、データがプログラムされる時にページに戻ってプログラムすることができる。ステップ552での監視は、現在プログラムされているサブディビジョン(1つまたは複数)のプログラム/消去カウンタを所定の限度と比較することを含む。に基づいて使用される2つの所定の限度がある。一方の限度は、SBCストレージモード限度であり、他方は、MBCストレージモード限度である。たとえば、MBCストレージモードサブディビジョンは、10000プログラム/消去サイクルという限度を有し、SBCストレージモードサブディビジョンは、100000プログラム/消去サイクルという限度を有する。プログラミング動作が完了する前または後に、この比較が実行される。その後、適用可能な所定の限度に達する場合に、3つの可能なアクションのうちの1つが行われる。
【００５３】
第1の可能なアクションは、ステップ554で、MBCストレージモードサブディビジョンをSBCストレージモードに変換することによって、それらのサブディビジョンの寿命を延ばすことである。したがって、MBCストレージモードサブディビジョンに現在格納されている、変換されるすべてのデータは、使用可能なMBCストレージモードサブディビジョンに移動されるかプログラムされるかのいずれかである。次に、アドレスマッピングテーブル内の対応するモードタグビットが、ステップ556で、サブディビジョンがSBCストレージモードにセットされていることを示すために変更される。ページのタグビットフィールドは、データがページにプログラムされる時にプログラムされる。
【００５４】
第2の可能なアクションは、ステップ558で、SBCストレージモードサブディビジョンをMBCストレージモードに変換することによって、それらのサブディビジョンを再利用することである。これは、ステップ554で述べたプロセスの逆のプロセスである。再利用は、2つの条件の下で行われ、一方の条件は、SBCプログラム/消去サイクル数が標準SBC限度より少ない所定の値未満であることであり、ここで、標準SBC限度は、100000サイクルとすることができる。これは、100000サイクル近くまでプログラムされるSBCメモリセルが、MBCストレージモードで信頼できる形でデータを格納しない点まで劣化するという事実に起因する。したがって、減らされたSBCからMBCへの再利用限度が使用される。この減らされた限度は、サブディビジョンが、10000プログラム/消去サイクルという標準MBC限度に信頼できる形で耐えるように選択される。一実施形態で、減らされたSBCからMBCへの再利用限度は、このMBC限度に対応する。たとえば、MBC限度が10000サイクルである場合に、SBCメモリセルが10000SBCプログラム/消去サイクル以下に耐えたならば、それらのセルをMBCストレージモードに変換することができる。第2の条件は、SBCサブディビジョンに格納されたデータが、もはや使用されない、すなわち、そのデータが、消去され、同一サブディビジョンに再プログラムされないことである。サブディビジョンが消去される時に、アドレスマッピングテーブルが、そのサブディビジョンが空いていることを示すために更新される。この2つの条件が満足されたならば、アドレスマッピングテーブル内のモードタグ状態が、ステップ556で変更される。したがって、そのようなSBCサブディビジョンを高密度ストレージのために再利用することが有利である。
【００５５】
第3の可能なアクションは、SBCサブディビジョンがそのSBCプログラム/消去サイクル限度に達している時に、ステップ560でそれらのSBCサブディビジョンを退役させることである。この場合に、サブディビジョンは、単純にマップアウトされ、もはやフラッシュメモリシステムによって使用されなくなる。使用不能なサブディビジョンのマップアウトは、フラッシュメモリシステムでの周知の動作である。しかし、この時点までに、サブディビジョン(1つまたは複数)が、MBCストレージモードとSBCストレージモードとの両方でデータを格納していたことになり、これによって、サブディビジョン(1つまたは複数)の寿命が最大にされる。
【００５６】
前に説明した実施形態は、マルチモードフラッシュメモリが、デフォルトでそのサブディビジョンのすべてをMBCストレージモードでデータを格納するように構成されることを前提とする。しかし、すべてのMBCストレージモードサブディビジョンを、ホストシステムによってSBCストレージモードに変換することができる。図14は、MBCおよびSBCのストレージモードデータのホストシステム選択可能なプログラミングの方法を示す流れ図である。この方法を、図13の寿命延長方法のステップ550のサブルーチンとして実行することができる。ステップ600で開始して、フラッシュメモリコントローラは、ホストからプログラミング命令を受け取り、プログラムすべきデータのタイプを識別する。データのタイプは、たとえば、JPEGなどのイメージファイル、スプレッドシート文書またはテキスト文書などのさまざまなアプリケーションデータファイル、および実行可能プログラムとすることができる。各ファイルは、特定の拡張子を有するので、フラッシュメモリコントローラは、特定のデータタイプを識別する。次に、フラッシュメモリコントローラは、ステップ602で、データタイプが高信頼性を要求するかどうかを判定する。これは、たとえば、高信頼性を要求すると思われるすべてのデータタイプを含むテーブルをチェックすることによって行うことができる。たとえば、実行可能プログラムを、高信頼性を要求すると考えることができる。ホストシステムが、高信頼性を要求するデータタイプを事前に選択できることに留意されたい。
【００５７】
データタイプがテーブルに現れない場合には、この方法は、ステップ604に進み、マルチモードフラッシュメモリデバイスが、MBCストレージモードでデータをプログラムする。より具体的には、フラッシュメモリコントローラは、モードタグをMBCストレージモードにセットされた空きサブディビジョンをそのアドレスマッピングテーブルから識別し、適当なMBCプログラミングコマンドをマルチモードフラッシュメモリデバイスに発行する。そのコマンドを受け取る時に、マルチモードフラッシュメモリデバイスは、図10について前に説明した形で内部プログラミング動作に進む。内部プログラム検証が、データが成功してプログラムされたと判定したならば、選択されたページに対応するアドレスマッピングテーブル内のプログラム/消去カウンタが、ステップ606で増分される。
【００５８】
ステップ602に戻って、データタイプがテーブルに現れる場合には、この方法は、ステップ608に進み、ここで、フラッシュメモリコントローラが、使用可能な空きSBCストレージモードサブディビジョンがあるかどうかをチェックする。空きSBCストレージモードサブディビジョンが使用可能である場合には、マルチモードフラッシュメモリデバイスは、ステップ610で、SBCストレージモードで対応する物理位置にデータをプログラムするように指示される。そうでない場合には、必要なMBCストレージモードサブディビジョンが、ステップ612で、そのモードタグの状態を反転することによって、SBCストレージモードに変換される。その後、ステップ610が実行されて、データがSBCストレージモードでプログラムされる。ステップ610でのSBCストレージモードプログラミングに続いて、対応するプログラム/消去カウンタが、ステップ606で増分される。したがって、ユーザは、マルチモードフラッシュメモリデバイスでMBCストレージモードまたはSBCストレージモードのいずれかでデータを選択的にプログラムする。
【００５９】
前に述べた方法は、高信頼性タイプまたは低信頼性タイプのいずれかとしてデータファイルタイプを分類した。代替実施形態では、データファイルタイプを、異なる信頼性レベルに分類することができる。次に、ホストシステムは、どの信頼性レベルが高信頼性データとして分類されるべきかを判定するためのしきい値をセットすることができる。
【００６０】
前に述べたように、フラッシュメモリシステムは、寿命延長アルゴリズムを自動的に実行することができる。図15は、MBCストレージモードサブディビジョンをSBCストレージモードサブディビジョンに自動的に変換する1つの方法を示す流れ図である。プログラミング命令が、まず、ステップ650で、フラッシュメモリコントローラによって受け取られる。たとえば、プログラミング命令は、マルチモードフラッシュメモリデバイスの同一のサブディビジョンに格納された既存ファイルを変更することである。選択されたサブディビジョン(1つまたは複数)のプログラム/消去カウンタが、ステップ652で、MBCストレージモードの所定のサイクル限度と比較される。カウンタ値が限度未満である場合には、データは、ステップ654で、単純にマルチモードフラッシュメモリデバイス内の同一サブディビジョンにプログラムされる。そうでない場合には、限度に達しており、データは、ステップ656で新しいサブディビジョンにプログラムされる。次に、オリジナルサブディビジョンが、ステップ658で、データをクリアするために消去される。最後に、アドレスマッピングテーブル内のオリジナルサブディビジョンのモードタグの状態が、ステップ660で反転され、これによって、これらがSBCストレージモードサブディビジョンとして指定される。SBCストレージモードに変換されたサブディビジョンは、ステップ662でそのプログラム/消去カウンタをリセットされる。というのは、今、サブディビジョンが満了し、もはや使用できなくなる前に実行できる所定の回数のSBCプログラム/消去サイクルがあるからである。
【００６１】
代替の変更されたシーケンスは、データをプログラムし、カウンタを増分し、その後、プログラム/消去カウンタを所定のサイクル限度と比較することである。カウンタ値がサイクル限度未満である場合には、さらなるアクションは行われない。そうでない場合には、現在プログラムされているデータが、使用可能なMBCストレージモードサブディビジョンに移動され、または再プログラムされる。再プログラミングは、システムがアイドルである時であればいつでも行うことができる。その後、オリジナルサブディビジョンが、消去され、モードタグビットが、反転される。
【００６２】
SBCストレージモードサブディビジョンにデータをプログラムするステップは、図15に示したものと実質的に同一である。MBCプログラム/消去限度が、SBCプログラム/消去限度に置換され、SBCストレージモードサブディビジョンは、SBCサブディビジョンプログラム/消去カウンタがSBCプログラム/消去限度と等しい場合に、単純に使用から退役させられる。その後、SBCデータが、使用可能なSBCストレージモードサブディビジョンにプログラムされる。MBCストレージモードサブディビジョンだけが使用可能である場合には、図14の方法が実行されて、必要なMBCストレージモードサブディビジョンがSBCストレージモードに変換され、その後、データをプログラムする。
【００６３】
上で述べた実施形態では、1つのカウンタを、MBCプログラム/消去サイクルを追跡するのに使用し、その後、SBCストレージモードに変換された時にSBCプログラム/消去サイクルを追跡するのに再利用することができる。オプションの実施形態によれば、SBCサブディビジョンを再利用できる場合に、別々のSBCプログラム/消去カウンタおよびMBCプログラム/消去カウンタが設けられる。
【００６４】
図16の方法は、SBCストレージモードサブディビジョンを再利用するステップの概要を示す。この方法は、フラッシュメモリシステムがアクティブであるどの時にも実行することができる。この方法は、ステップ700で、空であるすなわちデータを格納することが意図されていない各SBCストレージモードサブディビジョンを識別することによって開始される。ステップ702で、SBCプログラム/消去カウンタを、MBC再利用限度と比較する。このカウンタが、少なくとも再利用限度である場合には、このプロセスは、ステップ704で終了し、SBCストレージモードサブディビジョンは、MBCストレージモードに変換されない。その一方で、SBCプログラム/消去カウンタが再利用限度未満である場合には、ステップ706で、ロックビットの状況がチェックされる。アクティブ状態にセットされているロックビットは、現在のSBCサブディビジョンが、図14の自動変換方法によって以前にMBCストレージモードからSBCストレージモードに変換されたことを示す。言い換えると、SBCストレージモードサブディビジョンが、そのMBCプログラム/消去サイクルを既に使い果たしている場合には、それをSBCストレージモードからMBCストレージモードサブディビジョンとしてのさらなる利用のために再利用する理由はない。ロックビットがセットされていない場合には、それに対応するモードタグの状態を、ステップ708で変更する。ステップ710で、このサブディビジョンがSBCストレージモードに戻って変換される場合に、このサブディビジョンの将来の再利用を防ぐために、ロックビットをセットする。
【００６５】
現在述べている方法は、マルチモードフラッシュメモリデバイス内でデータをプログラミングする技法およびプログラミング動作中にマルチモードフラッシュメモリデバイスの寿命を延ばす技法を提示する。これらの動作では、モードタグは、データがMBCストレージモードまたはSBCストレージモードのどちらを用いてプログラムされなければならないかを判定し、モードの間の自動変換を実行するのに使用される。プログラムされたならば、モードタグは、実行すべき読取り動作のタイプを判定するのに使用される。図17は、マルチモードフラッシュメモリデバイスからデータを読み取る方法の概要を示す流れ図である。
【００６６】
ステップ750で開始して、読取り命令が、フラッシュメモリコントローラによって受け取られる。この読取り命令は、所望のデータの論理アドレスを含む。次に、フラッシュメモリコントローラは、ステップ752で、その論理アドレスに対応するモードタグビットの状態についてアドレスマッピングテーブルをチェックする。モードタグの状態が、たとえば論理「1」などの第1状態である場合に、MBCストレージモード読取りコマンドCMDが、生成され、マルチモードフラッシュメモリデバイスに供給される。それに応答して、マルチモードフラッシュメモリデバイスは、ステップ754でコマンドをデコードし、RD_MBCコマンドを発行する。その後、ステップ756で、MBC読取りが実行される。そうでない場合には、マルチモードフラッシュメモリデバイスは、ステップ758でRD_SBCコマンドを発行し、ステップ760で、SBC読取りが実行される。読取りコマンドの特定のタイプにかかわりなく、データは、メモリアレイから読み出され、フラッシュメモリコントローラに戻って供給される。したがって、SBCストレージモードとMBCストレージモードとでプログラムされるデータの両方に、ユーザが、同一のマルチモードフラッシュメモリデバイスからアクセスすることができる。
【００６７】
前に述べた実施形態のすべてで、フラッシュメモリコントローラおよびマルチモードフラッシュメモリデバイスによって実行される選択的MBCプロセスまたは選択的SBCプロセスは、ユーザには透過的に行われる。SBC/MBCストレージモード動作のすべての判定が、フラッシュメモリコントローラによって行われるので、ユーザに要求される追加の命令または命令の変更はない。したがって、現在説明されているフラッシュメモリシステムをホストシステムと共に実施するために必要な最小限のオーバーヘッドがある。
【００６８】
したがって、マルチモードフラッシュメモリデバイスの前に説明した実施形態を、SBCストレージモードまたはMBCストレージモードでデータを選択的にプログラムするために制御することができ、両方のストレージモードでプログラムされるデータが、同時に同一のメモリアレイ内に共存するようになる。選択的プログラミングを、プログラムされるデータのタイプに基づいてユーザ制御の下で行うことができ、かつ/またはプリセットアルゴリズムを介して自動的に行うことができる。両方のタイプのストレージモードを用いてデータを格納することによって、マルチモードフラッシュメモリデバイスの寿命が、MBCストレージモードでのみデータを格納すること専用のフラッシュメモリデバイスより延ばされる。前に説明した実施形態で言及されるサブディビジョンを、メモリバンク、メモリブロック、またはページとすることができる。
【００６９】
上述の説明では、説明の目的から、本実施形態の完全な理解をもたらすために多数の詳細が示されている。しかし、これらの実施形態を実践するためにこれらの具体的な詳細が必要ではないことが、当業者には明白である。他の場合には、周知の電気構造および電気回路を、実施形態の諸態様を不明瞭にしないようにするために、ブロック図形式で示す。たとえば、特定の詳細は、本明細書で説明する実施形態がソフトウェアルーチン、ハードウェア回路、ファームウェア、またはその組合せとして実施されるかどうかに関しては提供されない。
【００７０】
上で説明した実施形態は、例示であることだけを意図されている。添付の特許請求の範囲のみによって定義される範囲から逸脱せずに、当業者が、特定の実施形態に対する代替形態、修正形態、および変形形態をもたらすことができる。
【符号の説明】
【００７１】
10  フラッシュメモリ
12  制御回路
14  メモリアレイ
20  バンク
22  フラッシュメモリセル
24  ストリング選択デバイス
26  ビット線
28  グラウンド選択デバイス
30  データレジスタ
100  フラッシュメモリシステム
102  ホストシステム
104  フラッシュメモリコントローラ
106  マルチモードフラッシュメモリデバイス
108  チャネル
120  フラッシュメモリシステム
122  フラッシュメモリコントローラ
124  ホストシステム
126  マルチモードフラッシュメモリデバイス
300  マルチモードフラッシュメモリデバイス
302  メモリブロック
304  ページ
306  ページ
308  ページ
310  ページ
312  ページ
314  ページ
315  ページ
316  ページ
317  ページ
318  ページ
320  ページ
322  ページ
324  ページ
350  ユーザデータフィールド
352  予備データフィールド
354  ストレージモードタグ
356  プログラム/消去サイクルカウンタ
358 SBCカウンタ
360  ロックビット
400  フラッシュメモリシステム
402  フラッシュメモリコントローラ
404  マルチモードフラッシュメモリデバイス
405  マルチモード制御回路
406  論理-物理アドレストランスレータ
408  コマンドデコーダ
410  制御論理
412  フラッシュメモリ回路網
414  メモリアレイ
416 MBCコマンドデコーダ
418 SBCコマンドデコーダ
420  共通コマンドデコーダ
【図１】
0005421127.tif 000002
【図２】
0005421127.tif 000003
【図３】
0005421127.tif 000004
【図４】
0005421127.tif 000005
【図５】
0005421127.tif 000006
【図６】
0005421127.tif 000007
【図７】
0005421127.tif 000008
【図８Ａ】
0005421127.tif 000009
【図８Ｂ】
0005421127.tif 000010
【図９】
0005421127.tif 000011
【図１０】
0005421127.tif 000012
【図１１】
0005421127.tif 000013
【図１２】
0005421127.tif 000014
【図１３】
0005421127.tif 000015
【図１４】
0005421127.tif 000016
【図１５】
0005421127.tif 000017
【図１６】
0005421127.tif 000018
【図１７】
0005421127.tif 000019