(58)【調査した分野】(Int.Cl.,DB名)
ロールバック動作の時に、前記メモリコントローラは、前記次のステージに移動された前記ポインターを前記選択されたステージの前記第1番目のポインターに再び移動させる請求項2に記載のメモリシステム。
前記メモリコントローラは、1つのページデータが受信される時に前記1つのページデータに対応するプログラムエンティティー及びポインターを生成し、前記生成されたポインターと連関されて特定数のページデータが受信されて累積された時に前記生成されたポインターを前記複数のステージの中で前記第1番目のステージに格納するように構成される請求項1に記載のメモリシステム。
ロールバック動作の時に、前記メモリコントローラは、前記追加ステージに最後に格納されたポインターを前記最後のステージに移動させる請求項6に記載のメモリシステム。
前記メモリコントローラは、前記追加ステージに格納された前記ポインターと連関して前記書込み命令及び前記対応するセットの伝送を遂行しない請求項6に記載のメモリシステム。
ロールバック動作の時に、前記メモリコントローラは、前記次のステージに移動された前記ポインターを前記選択されたステージに再び移動させる請求項1に記載のメモリシステム。
前記メモリコントローラが前記選択されたステージの前記ポインターを前記複数のステージの中で前記選択されたステージの前記次のステージに格納する段階は、前記メモリコントローラが前記ポインターを前記次のステージの最後のポインターに格納する段階を含む請求項10に記載の動作方法。
前記メモリコントローラが前記選択されたステージの第2番目のポインターを前記選択されたステージの新しい第1番目のポインターとして認識する段階をさらに含む請求項11に記載の動作方法。
ロールバック動作の時に、前記メモリコントローラが前記次のステージの前記最後のポインターを前記選択されたステージの前記第1番目のポインターに再び移動させる段階をさらに含む請求項12に記載の動作方法。
前記メモリコントローラが前記プログラムエンティティーを指す前記ポインターを前記プログラムキューの前記複数のステージの中で前記第1番目のステージに格納する段階は、
前記プログラムエンティティーを指す前記ポインターと連関された特定数のページデータが受信されて前記ページデータの前記セットが収集された時に前記メモリコントローラが前記プログラムエンティティーを指す前記ポインターを前記第1番目のステージに格納する段階を含む請求項10に記載の動作方法。
前記メモリコントローラが前記最後のステージのポインターに応じて書込み命令及び前記対応するデータのセットを前記不揮発性メモリに伝送した後に、前記最後のステージの前記ポインターを前記プログラムキューの追加ステージに移動させる段階と、
前記追加ステージに格納されたポインターの数が特定数より多くなる時、前記メモリコントローラが前記追加ステージに格納された前記ポインターの中で前記プログラムキューにポインターがまだ格納されていない状態で最初に格納されたポインターをリリースする段階をさらに含む請求項10に記載の動作方法。
ロールバック動作の時に、前記メモリコントローラが前記追加ステージに最後に格納されたポインターを前記最後のステージに移動させる段階をさらに含む請求項16に記載の動作方法。
前記メモリコントローラは、前記追加ステージに格納された前記ポインターと連関して前記書込み命令及び前記対応するセットの伝送を遂行しない請求項16に記載の動作方法。
ロールバック動作の時に、前記メモリコントローラが前記次のステージに移動された前記ポインターを前記選択されたステージに再び移動させる段階をさらに含む請求項10に記載の動作方法。
【発明を実施するための形態】
【0053】
以下で、本発明が属する技術分野で通常の知識を有する者が本発明の技術的思想を容易に実施できるよう詳細に説明するために、本発明の実施形態を添付の図面を参照して説明する。
【0054】
図1は本発明の実施形態によるメモリシステム100を示すブロック図である。
図1を参照すれば、メモリシステム100はバス110、第1プロセッサー120、ホストインターフェイス125、第1メモリ130、第2プロセッサー140、第2メモリ150、バッファマネージャー160、バッファメモリ170、メモリマネージャー180、及び不揮発性メモリ190を含む。
【0055】
第1及び第2プロセッサー120、140を参照して本発明の実施形態が説明される。しかし、本発明の技術的思想は1つのプロセッサー又は2以上のプロセッサーにも適用され得る。また、本発明の技術的思想は第1及び第2メモリ130、150の代わりに単一メモリにも適用され得る。
【0056】
バス110はメモリシステム100の構成要素の間にチャンネルを提供することができる。バス110はAMBA、AHB等のような多様な標準の中で少なくとも1つに基づいて、動作することができる。
【0057】
第1プロセッサー120は外部装置(例えば、ホスト)との通信を処理することができる。例えば、第1プロセッサー120はホストインターフェイス125を通じて外部装置から受信されるコマンド、アドレス、又はデータを処理することができる。第1プロセッサー120はホストインターフェイス125を通じて外部装置から受信されるコマンド又はアドレスを第2プロセッサー140に伝送することができる。第1プロセッサー120はホストインターフェイス125を通じて外部装置から受信されるデータをバッファマネージャー160を通じてバッファメモリ170に格納することができる。
【0058】
例えば、ホストインターフェイス125を通じてデータが受信される時、第1プロセッサー120はバッファメモリ170にデータが格納される領域を割当することができる。ホストインターフェイス125を通じて受信されるデータはバッファマネージャー160を通じてバッファメモリ170の割当された格納領域に格納され得る。例えば、ホストインターフェイス125を通じてコマンド又はアドレスが受信される時、第1プロセッサー120はホストインターフェイス125からアドレス又はコマンドを受信できる。第1プロセッサー120は受信されるアドレス又はコマンドを第1メモリ130に格納することができる。ホストインターフェイス120はホストインターフェイス125を通じて受信されるデータがバッファメモリ170に格納された後、外部装置にプログラムが完了されたことを知らせる信号を伝送することができる。ホストインターフェイス120はホストインターフェイス125を通じて受信されるデータがバッファメモリ170に格納された後、第1メモリ130に格納されたアドレス又はコマンドを第2メモリ140に伝達することができる。ホストインターフェイス125は第1メモリ130に格納されたアドレス又はコマンドを第2プロセッサー140で使用されるデータ構造に変換し、変換されたアドレス又はコマンドを第2プロセッサー140に伝達することができる。
【0059】
ホストインターフェイス125は第1プロセッサー120の制御にしたがって外部装置と通信を遂行することができる。ホストインターフェイス125は外部装置から受信されるデータをバッファマネージャー160を通じてバッファメモリ170に格納することができる。ホストインターフェイス125は外部装置から受信されるコマンド又はアドレスを第1プロセッサー120に伝達することができる。
【0060】
第1メモリ130は第1プロセッサー120の動作メモリであり得る。第1メモリ130はSRAMを包含することができる。第1メモリ130は第1プロセッサー120と1つの半導体チップに集積され得る。第1メモリ130は1つの半導体チップで第1プロセッサー120と同一なハードウェアブロックに集積され得る。第1メモリ130は第1プロセッサー120と共に集積される埋め込み型SRAM(embedded SRAM)であり得る。
【0061】
第2プロセッサー140は第1プロセッサー140から受信されるコマンド又はアドレスに基づいて、動作することができる。受信されたコマンド又はアドレスに基づいて、第2プロセッサー140はメモリマネージャー180を通じて不揮発性メモリ190の読出し、プログラム、消去、又は背景動作を制御することができる。例えば、不揮発性メモリ190はフラッシュメモリであり、第2プロセッサー140はフラッシュメモリの動作を制御するように構成されることができる。
【0062】
第2プロセッサー140はステートマシン141を含む。ステートマシン141は第2プロセッサー140内に具現されるハードウェア又は第2プロセッサー140によって駆動されるソフトウェアであり得る。ステートマシン141は不揮発性メモリ190に対するプログラム動作を制御することができる。例示的に、ステートマシン141は第2メモリ150で管理されるプログラムキューに基づいて、不揮発性メモリ190のプログラムを制御することができる。
【0063】
第1及び第2プロセッサー120、140は互いに分離されたハードウェアであり得る。例えば、第1及び第2プロセッサー120、140は1つの半導体チップに集積され、1つの半導体チップ内で互いに分離されたハードウェアブロックを形成することができる。第1及び第2プロセッサー120、140は互いに分離された半導体チップであり得る。
【0064】
第2プロセッサー140は少なくとも2以上のプロセッサーを包含することができる。
第2プロセッサー140が少なくとも2以上のプロセッサーで構成される時、第2メモリ150は少なくとも2以上のプロセッサーに各々対応する少なくとも2以上のメモリを包含することができる。
【0065】
第2メモリ150は第2プロセッサー140の動作メモリであり得る。第2メモリ150はSRAMを包含することができる。第2メモリ150はメッセージキュー151、プログラムキュープール153、及びエンティティーポインタープール155の情報を格納することができる。
【0066】
メッセージキュー151は第2メモリ150の特定な格納領域に割当され得る。メッセージキュー151は第1プロセッサー120から伝送されるメッセージ(例えば、コマンド又はアドレス)を格納するように構成される。第2プロセッサー140はメッセージキュー151に格納されたメッセージ(例えば、コマンド又はアドレス)に基づいて、第2メモリ150で駆動されるプログラムキュー及びバッファメモリ170に格納されたデータを管理し、不揮発性メモリ190のプログラムを制御することができる。
【0067】
プログラムキュープール153は第2メモリ150の特定な格納領域に割当され得る。プログラムキュープール153はプログラムキューを割当するために準備された格納領域であり得る。第2プロセッサー140はメッセージキュー151に格納されたメッセージ(例えば、コマンド又はアドレス)に基づいて、プログラムキュープール153からプログラムキューを割当するか、プログラムキューを更新するか、或いはプログラムキューをリリースすることができる。第2プロセッサー140はプログラムキューに基づいて、不揮発性メモリ190のプログラムを制御することができる。
【0068】
エンティティーポインタープール155は第2メモリ150の特定な格納領域に割当され得る。エンティティーポインタープール155はエンティティーポインターを割当するために準備された格納領域であり得る。エンティティーポインターはバッファメモリ170のエンティティー領域173に格納されたプログラムエンティティーに対する情報(例えば、アドレス、状態情報等)を包含することができる。第2プロセッサー140はメッセージキュー151に格納されたメッセージに基づいて、エンティティーポインタープール155からエンティティーポインターを割当することができる。割当されたエンティティーポインターはプログラムキューに格納され得る。第2プロセッサー140はメッセージキュー151に格納されたメッセージに基づいて、エンティティーポインターを管理するか、或いはリリースすることができる。
【0069】
バッファマネージャー160は第1プロセッサー120又は第2プロセッサー140の制御にしたがってバッファメモリ170を制御するように構成される。バッファマネージャー160はバッファメモリ170の読出し又はプログラムを制御することができる。
【0070】
バッファメモリ170はバッファマネージャー160の制御にしたがって動作する。バッファメモリ170は第2プロセッサー140が不揮発性メモリ190の読出し、プログラム又は消去を制御するためのバッファメモリであり得る。バッファメモリ170はDRAMを包含することができる。バッファメモリ170はバッファ領域171及びエンティティー領域173を含む。
【0071】
バッファ領域171は外部装置(例えば、ホスト)からホストインターフェイス125を通じて受信されるデータを格納することができる。バッファ領域171は第1プロセッサー120及びバッファマネージャー160の制御にしたがってデータを格納することができる。
【0072】
エンティティー領域173はプログラムエンティティーを格納することができる。プログラムエンティティーはバッファ領域171に格納されたデータに対する情報(例えば、アドレス)及びバッファ領域171に格納されたデータがプログラムされる不揮発性メモリ190の情報(例えば、アドレス)を包含することができる。エンティティー領域173は第2プロセッサー140及びバッファマネージャー140の制御にしたがってプログラムエンティティーを格納することができる。
【0073】
メモリマネージャー180は第2プロセッサー140の制御にしたがって不揮発性メモリ190を制御するように構成される。メモリマネージャー180は不揮発性メモリ190の読出し、プログラム、書込み、又は背景動作を制御することができる。
【0074】
メモリマネージャー180はコマンドキュー181を含む。コマンドキュー181は第2プロセッサー140の制御によってバッファメモリ170から伝送されるコマンド(例えば、プログラムと連関された情報)を格納するように構成される。メモリマネージャー180はコマンドキュー181に格納されたコマンド(例えば、プログラムと連関された情報)に基づいて、不揮発性メモリ190の読出し、プログラム、消去、又は背景動作を制御することができる。
【0075】
不揮発性メモリ190はメモリマネージャー180の制御にしたがって動作する。不揮発性メモリ190は複数のメモリブロック191〜19nを含む。複数のメモリブロック191〜19nの各々は複数のメモリセル(図示せず)を含む。各メモリブロックのメモリセルはワードライン(図示せず)及びビットライン(図示せず)に連結され得る。例えば、各メモリブロックのメモリセルの行はワードラインに各々連結され得る。メモリブロック191〜19nのメモリセルの列はビットラインに各々連結され得る。
【0076】
メモリセルの各々は2以上のビットを格納することができる。各メモリセルが2つのビットを格納する場合、各メモリセルが格納するビットは最下位ビット及び最上位ビットであり得る。各メモリセルが3つのビットを格納する場合、各メモリセルが格納するビットは最下位ビット、中間ビット、及び最上位ビットであり得る。各メモリセルが4つのビットを格納する場合、各メモリセルが格納するビットは最下位ビット、第1中間ビット、第2中間ビット、及び最上位ビットであり得る。各メモリセルが格納するビットの数は限定されない。以下で、本発明の技術的思想を簡潔であり、明確に説明するために、各メモリセルは最下位ビット、中間ビット、及び最上位ビットを格納することと仮定される。
【0077】
1つのワードラインに連結されたメモリセルで、各メモリセルが格納する1つのビットは1つのページを形成することができる。例えば、1つのワードラインに連結されたメモリセルが格納する最下位ビットは最下位ページを形成することができる。1つのワードラインに連結されたメモリセルが格納する中間ビットは中間ページを形成することができる。1つのワードラインに連結されたメモリセルが格納する最上位ビットは最上位ページを形成することができる。
【0078】
後述されるように、複数のページを同一のワードラインに連結されたメモリセルに格納することはリプログラム方法によって遂行されることができる。ダイレクトリプログラム方法は複数のプログラム段階を含む。
【0079】
図42に示したように、ダイレクトリプログラムは1−ステッププログラム、粗いプログラム、及び精巧なプログラムの順に遂行されることができる。より詳細には、1−ステッププログラム、粗いプログラム、及び精巧なプログラムが遂行される時のメモリセルの閾値電圧の変化が
図42に図示される。1−ステッププログラム、粗いプログラム、及び精巧なプログラムは隣接するワードラインからのカップリングを考慮して、だんだん向上される精密度を有することができる。1−ステッププログラム、粗いプログラム、及び精巧なプログラムは順次的に遂行されることができる。
【0080】
例示的に、不揮発性メモリ190のワードラインは3つのプログラムアドレス及び3つの読出しアドレスを有することができる。3つのプログラムアドレスは1−ステッププログラム、粗いプログラム、及び精巧なプログラムに各々対応することができる。プログラムの時に、メモリマネージャー180は3つのプログラムアドレスの中で1つとプログラムコマンドとを不揮発性メモリ190に伝送することができる。読出しの時に、メモリマネージャー180は3つの読出しアドレスの中で1つと読出しコマンドを不揮発性メモリ190に伝送することができる。3つの読出しアドレスはLSB、CSB、及びMSBページに各々対応することができる。
【0081】
例示的に、不揮発性メモリ190のワードラインは1つのプログラムアドレス及び3つの読出しアドレスを有することができる。プログラムの時に、メモリマネージャー180は1つのプログラムアドレス及び1−ステッププログラム、粗いプログラム、又は精巧なプログラムを示すプログラムコマンドを不揮発性メモリ190に伝送することができる。読出しの時に、メモリマネージャー180は3つの読出しアドレスの中で1つと読出しコマンドを不揮発性メモリ190に伝送することができる。3つの読出しアドレスはLSB、CSB、及びMSBページに各々対応することができる。
【0082】
ダイレクトリプログラムは下でより詳細に説明される。
【0083】
例示的に、不揮発性メモリ190はNANDフラッシュメモリであり得る。しかし、不揮発性メモリ190はNANDフラッシュメモリに限定されない。不揮発性メモリ190はPRAM(Phase−change RAM)、MRAM(Magnetic RAM)、RRAM(登録商標)(Resistive RAM)、FRAM(登録商標)(Ferroelectric RAM)等のような多様な不揮発性メモリの中で少なくとも1つを包含することができる。以下で、本発明の技術的思想を明確であり、簡潔に説明するために、不揮発性メモリ190はNANDフラッシュメモリであることと仮定される。
【0084】
例示的に、バス110、第1プロセッサー120、第1メモリ130、第2プロセッサー140、第2メモリ150、バッファマネージャー160、及びメモリマネージャー180は不揮発性メモリ190を制御するメモリコントローラMCを形成することができる。メモリコントローラMCは1つの半導体パッケージを形成することができる。バッファメモリ170はメモリコントローラMCと分離された他の1つの半導体パッケージを形成することができる。
【0085】
図2は本発明の実施形態によるメモリコントローラMCの動作方法の第1例を示す順序図である。例示的に、不揮発性メモリ190のプログラムを制御する動作方法が
図2に図示される。
図2を参照すれば、S110段階で、ページデータが受信される。
【0086】
S120段階で、受信されたページデータがバッファメモリ170に格納される。
【0087】
S130段階で、受信されたページデータを示すプログラムエンティティーが生成され、生成されたプログラムエンティティーがバッファメモリ170に格納される。例示的に、1つのプログラムエンティティーはバッファメモリ170に格納されたデータの中で予め定まれた数のページデータを示すことがあり得る。ページデータは不揮発性メモリ190の1つのページにプログラムされるデータであり得る。例示的に、1つのプログラムエンティティーが示すページデータの数は不揮発性メモリ190の1つのワードラインに連結されたメモリセルにプログラムされるページデータの数であり得る。
【0088】
S140段階で、プログラムエンティティーと連関されたプログラムキューに基づいて、データのダイレクトリプログラムが制御される。例示的に、S130段階で生成されたプログラムエンティティーに対応するすべてのページデータがバッファメモリ170に格納された後、S140段階のダイレクトリプログラムが遂行されることができる。
【0089】
ダイレクトリプログラムは1つのワードラインに対応するページ(例えば、最下位ページ、中間ページ、及び最上位ページ)のデータを利用して、不揮発性メモリ190の1つのワードラインに連結されたメモリセルで2回以上のプログラムを遂行するプログラム方法であり得る。ダイレクトリプログラムは
図43を参照してより詳細に説明される。
【0090】
図3はプログラムキューPQの例を示す。
図1及び
図3を参照すれば、プログラムキューPQはプログラムキュープール153から割当され得る。プログラムキューPQは複数のステージを含む。例えば、プログラムキュープール153から複数のキューが割当され得る。割当された複数のキューはプログラムキューPQのステージを各々形成することができる。
【0091】
プログラムキューPQの各ステージに複数のエンティティーポインターEPが登録される(又はエンキュー(enqueue)される)ことができる。各ステージに登録されることができるエンティティーポインターEPの数はプログラムキューPQの深さを形成することができる。各ステージは独立的なキューを形成することができる。プログラムキューPQの深さはメモリコントローラMCに採用されるアルゴリズムの種類及び遂行方法によって調節され得る。例示的に、プログラムキューPQのステージの深さは互いに異なりに設定され得る。
【0092】
プログラムキューPQのステージは基本ステージQ0〜Qn及び追加ステージQn+1〜Qn+aを包含することができる。基本ステージQ0〜Qnは不揮発性メモリ190のダイレクトリプログラムが遂行される時、必須的に要求されるステージであり得る。例えば、基本ステージQ0〜Qnの数は、ダイレクトリプログラムが遂行される時、1つのワードラインに連結されたメモリセルのプログラムを完了するために要求されるプログラムの回数であり得る。
【0093】
追加ステージQn+1〜Qn+aは不揮発性メモリ190の動作性能を向上させるために追加的に具備され得る。追加ステージQn+1〜Qn+aの数はメモリコントローラMCに採用されるアルゴリズムの種類及び遂行方法によって調節され得る。
【0094】
本発明の技術的思想を簡潔であり、明確に説明するために、基本ステージは3つのステージQ0〜Q2で構成され、追加ステージは1つのステージQCで構成されることと仮定される。また、基本ステージQ0〜Q2及び追加ステージQCの深さは3であることと仮定される。
【0095】
図4は第2プロセッサー140のステートマシン141が動作する方法を示す状態図である。
図3及び
図4を参照すれば、新しいメモリブロックが割当されれば、ステートマシン141は初期状態RSSに進入する。例えば、不揮発性メモリ190の新しいメモリブロックにプログラムされるデータ、コマンド、又はアドレスが受信されれば、新しいブロックが割当され得る。初期状態RSSで、プログラムキューPQが割当され得る。ステートマシン141は第2メモリ150のプログラムキュープール153から新しいプログラムキューPQを割当することができる。
【0096】
割当されたプログラムキューPQでエンキュー(enqueue)が検出されれば、ステートマシン141は第0状態RS0に進入できる。より詳細には、割当されたプログラムキューPQの第1番目のステージQ0でエンキューが検出されれば、ステートマシン141は第0状態RS0に進入できる。
【0097】
第0状態RS0で、ステートマシン141はプログラムキューPQの第1番目のステージQ0に存在するエンティティーポイントの中で第1番目のエンティティーポインター(例えば、最も先にエンキューされたエンティティーポインター)に対応するデータのプログラムをイッシュー(issue)することができる。メモリマネージャー180はプログラムイッシューにしたがって不揮発性メモリ190をプログラムすることができる。プログラムイッシューに対応するエンティティーポインターは次のステージ(例えば、第2番目のステージQ1)にエンキューされる。以後、ステートマシン141は第1状態RS1に進入する。ステートマシン141はプログラムキューPQの第1番目のステージQ1でエンキューが検出される時まで第1状態RS1を維持する。
【0098】
割当されたプログラムキューPQの第1番目のステージQ0でエンキューが検出されれば、第1状態RS1で、ステートマシン141はプログラムキューPQの第1番目のステージQ0に存在するエンティティーポイントの中で第1番目のエンティティーポインター(例えば、最も先にエンキューされたエンティティーポインター)に対応するデータのプログラムをイッシュー(issue)することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ(例えば、第2番目のステージQ1)にエンキューされる。
【0099】
第1状態RS1にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン141は第2状態RS2に進入する。第2状態RS2で、ステートマシン141はプログラムキューPQの第2番目のステージQ1に存在するエンティティーポイントの中で第1番目のエンティティーポインター(例えば、最も先にエンキューされたエンティティーポインター)に対応するデータのプログラムをイッシュー(issue)することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ(例えば、第3番目のステージQ2)にエンキューされる。
【0100】
第2状態RS2にしたがってプログラムイッシュー及びエンキューが遂行された後、ステートマシン141は第3状態RS3に進入できる。ステートマシン141はプログラムキューPQの第1番目のステージQ0でエンキューが検出される時まで、第3状態RS3を維持することができる。
【0101】
第3状態RS3で、プログラムキューPQの第1番目のステージQ0でエンキューが検出されれば、ステートマシン141はプログラムキューPQの第1番目のステージQ0に存在するエンティティーポイントの中で第1番目のエンティティーポインター(例えば、最も先にエンキューされたエンティティーポインター)に対応するデータのプログラムをイッシュー(issue)することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ(例えば、第2番目のステージQ1)にエンキューされる。
【0102】
第3状態RS3にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン141は第4状態RS4に進入する。第4状態RS4で、ステートマシン141はプログラムキューPQの第2番目のステージQ1に存在するエンティティーポイントの中で第1番目のエンティティーポインター(例えば、最も先にエンキューされたエンティティーポインター)に対応するデータのプログラムをイッシュー(issue)することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ(例えば、第3番目のステージQ2)にエンキューされる。
【0103】
第4状態RS4にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン141は第5状態RS5に進入する。第5状態RS5で、ステートマシン141はプログラムキューPQの第3番目のステージQ2に存在するエンティティーポイントの中で第1番目のエンティティーポインター(例えば、最も先にエンキューされたエンティティーポインター)に対応するデータのプログラムをイッシュー(issue)することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ(例えば、追加ステージQC)にエンキューされる。
【0104】
第5状態RS5にしたがってプログラムイッシュー及びエンキューを遂行した後、プログラムキューPQの状態又は不揮発性メモリ190のプログラム状態にしたがってステートマシン141の動作が分岐される。割当されたメモリブロックが満ちていることと検出される場合、ステートマシン141は第6状態RS6に進入できる。例示的に、バッファメモリ170に格納されたデータを利用して、割当されたメモリブロックのプログラムが完了されることができる場合、割当されたメモリブロックが満ちていることと判別され得る。
【0105】
例示的に、割当されたメモリブロックが満ちているか否かの判別は、バッファメモリ170に格納されたデータがプログラムされる不揮発性メモリ190のアドレスによって判別され得る。他の例として、割当されたメモリブロックが満ちているか否かの判別は、割当されたメモリブロックのワードラインの数及び割当されたメモリブロックで遂行されるプログラムの回数に基づいて、判別され得る。
【0106】
割当されたメモリブロックが満ちていない場合、ステートマシン141は第3状態RS3に進入する。第3状態RS3で、ステートマシン141はプログラムキューPQの第1番目のステージQ0でエンキューが検出される時まで待機することができる。
【0107】
割当されたメモリブロックが満ちていない場合、ステートマシン141は第6状態RS6に進入する。第6状態RS6で、ステートマシン141はプログラムキューPQの第2番目のステージQ1に存在するエンティティーポイントの中で第1番目のエンティティーポインター(例えば、最も先にエンキューされたエンティティーポインター)に対応するデータのプログラムをイッシュー(issue)することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ(例えば、第3番目のステージQ2)にエンキューされる。
【0108】
第6状態RS6にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン141は第7状態RS7に進入する。第7状態RS7で、ステートマシン141はプログラムキューPQの第3番目のステージQ2に存在するエンティティーポイントの中で第1番目のエンティティーポインター(例えば、最も先にエンキューされたエンティティーポインター)に対応するデータのプログラムをイッシュー(issue)することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ(例えば、追加ステージQC)にエンキューされる。
【0109】
第7状態RS7にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン141は第8状態RS8に進入する。第8状態RS8で、ステートマシン141はプログラムキューPQの第3番目のステージQ2に存在するエンティティーポイントの中で第1番目のエンティティーポインター(例えば、最も先にエンキューされたエンティティーポインター)に対応するデータのプログラムをイッシュー(issue)することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ(例えば、追加ステージQC)にエンキューされる。
【0110】
第8状態RS8にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン141は終了状態RSEに進入する。終了状態RSEで、ステートマシン141は割当されたプログラムキューPQをリリースし、割当されたブロックを閉じる(close)ことができる。
【0111】
図5は本発明の実施形態によるメモリコントローラMCの動作方法の第2例を示す順序図である。
図1、
図3乃至
図5を参照すれば、S210段階で、第1ページデータが受信され、受信された第1ページデータがバッファメモリ170に格納される。第1ページデータは不揮発性メモリ190の第1ワードラインに連結されたメモリセルに格納されるデータであり得る。第1ページデータは最下位ページデータであり得る。
【0112】
第1ワードラインのメモリセルにプログラムされる第1データが受信されることにしたがって、ステートマシン141はプログラムキューPQを割当することができる。
【0113】
S220段階で、バッファメモリ170に格納された第1ページデータを示す第1プログラムエンティティーが生成される。生成された第1プログラムエンティティーはバッファメモリ170に格納される。
【0114】
以後に、第1ページデータに対応するページデータが受信され得る。例えば、第1ページデータに対応する中間ページデータ及び最上位ページデータが受信され得る。受信されたページデータはバッファメモリ170に格納され得る。受信されたページデータがバッファメモリ170に格納されることにしたがって、第1ページデータに対応する第1プログラムエンティティーが更新され得る。第1プログラムエンティティーは中間ページデータ及び最上位ページデータに対する情報をさらに包含するように更新され得る。
【0115】
第1ワードラインのメモリセルにプログラムされるすべてのページデータが受信されれば、第1プログラムエンティティーがプログラムキューPQにエンキューされることができる。
【0116】
S210段階及びS220段階はステートマシン141の初期状態RSSに対応することができる。第1プログラムエンティティーがプログラムキューPQにエンキューされることにしたがって、ステートマシン141は第0状態RS0に進入できる。
【0117】
S230段階で、第1プログラムエンティティーのプログラム情報がメモリマネージャー180に伝送される。例えば、第1プログラムエンティティーがプログラムキューPQにエンキューされることにしたがって、第1プログラムエンティティーのプログラム情報がメモリマネージャー180に伝送され得る。第1プログラムエンティティーに含まれたプログラム情報に基づいて、第1ワードラインのメモリセルにプログラムされるデータ(例えば、第1ページデータを含む2又はその以上のページデータ)がメモリマネージャー180によって不揮発性メモリ190に伝送され得る。
【0118】
S230段階はステートマシン141の第0状態RS0に対応することができる。ステートマシン141は第1ワードラインに対応する第1プログラムエンティティーのプログラム情報に基づいて、第1ワードラインに連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン141は第1プログラムエンティティーをプログラムキューPQの次のステージにエンキューすることができる。第1プログラムエンティティーに基づいたプログラムがイッシューされることにしたがって、ステートマシン141は第1状態RS1に進入することができる。
【0119】
S240段階で、第2ページデータが受信され、受信された第2ページデータがバッファメモリ170に格納される。第2ページデータは不揮発性メモリ190の第2ワードラインのメモリセルにプログラムされるデータであり得る。第2ページデータは最下位ページデータであり得る。
【0120】
S250段階で、バッファメモリ170に格納された第2ページデータを示す第2プログラムエンティティーが生成される。生成された第2プログラムエンティティーはバッファメモリ170に格納される。
【0121】
以後に、第2ページデータに対応するページデータが受信され得る。例えば、第2ページデータに対応する中間ページデータ及び最上位ページデータが受信され得る。受信されたページデータはバッファメモリ170に格納され得る。受信されたページデータがバッファメモリ170に格納されることにしたがって、第2ページデータに対応する第2プログラムエンティティーが更新され得る。第2プログラムエンティティーは中間ページデータ及び最上位ページデータに対する情報をさらに包含するように更新され得る。
【0122】
第2ワードラインのメモリセルにプログラムされるすべてのページデータが受信されれば、第2プログラムエンティティーがプログラムキューPQにエンキューされることができる。
【0123】
S260段階で、第2プログラムエンティティーのプログラム情報がメモリマネージャー180に伝送される。例えば、第2プログラムエンティティーがプログラムキューPQにエンキューされることにしたがって、第2プログラムエンティティーのプログラム情報がメモリマネージャー180に伝送され得る。第2プログラムエンティティーに含まれたプログラム情報に基づいて、第2ワードラインのメモリセルにプログラムされるデータ(例えば、第2ページデータを含む2又はその以上のページデータ)がメモリマネージャー180によって不揮発性メモリ190に伝送され得る。S240段階乃至S260段階はステートマシン141の第1状態RS1に対応することができる。
【0124】
ステートマシン141は第2プログラムエンティティーをプログラムキューPQの次のステージにエンキューすることができる。第2プログラムエンティティーに基づいたプログラムがイッシューされることにしたがって、ステートマシン141は第2状態RS2に進入できる。
【0125】
S270段階で、第1プログラムエンティティーのプログラム情報がメモリマネージャー180に伝送される。そして、第1ワードラインのメモリセルにプログラムされるデータ(例えば、第1ページデータを含むすべてのページデータ)が第1プログラムエンティティーに基づいて、メモリマネージャー180によって不揮発性メモリ190に伝送される。
【0126】
S270段階はステートマシン141の第2状態RS2に対応することができる。ステートマシン141は第1ワードラインに対応する第1プログラムエンティティーに基づいて、第1ワードラインに連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン141は第1プログラムエンティティーをプログラムキューPQの次のステージにエンキューすることができる。第1プログラムエンティティーに基づいたプログラムがイッシューされることにしたがって、ステートマシン141は第3状態RS3に進入できる。
【0127】
図6乃至
図29は
図5に図示された動作方法によってメモリシステム100でデータが処理される過程を示す。
【0128】
先ず、
図6を参照すれば、メッセージキュー151は第2メモリ150の特定な格納領域に割当され得る。メッセージキュー151は第1プロセッサー120から伝送されるメッセージ(例えば、コマンド又はアドレス)を格納できる複数のメッセージスロットMSを含む。複数のメッセージスロットの各々は不揮発性メモリ190の1つのプログラム管理単位に対応することができる。例えば、不揮発性メモリ190が1つのプレーンに構成される場合、1つのメッセージスロットは1つのプレーンの1つのメモリブロックの1つのワードラインの1つのページに対応することができる。不揮発性メモリ190が第1及び第2プレーンで構成される場合、1つのメッセージスロットは第1プレーンの1つのページ及び第2プレーンの1つのページに対応することができる。以下で、本発明の技術的思想を簡潔であり、明確に説明するために、1つのメッセージスロットは1つのページに対応することと仮定される。
【0129】
プログラムキュープール153は複数のプログラムキューを割当できる格納領域であり得る。エンティティーポインタープール155は複数のエンティティーポインターを割当できる格納領域であり得る。
【0130】
メモリシステム100にデータ、コマンド、及びアドレスが伝送されない状態で、メッセージキュー151は空いた状態である。また、プログラムキューPQ及びエンティティーポインターは割当されない状態である。
【0131】
バッファ領域171はページデータを格納できる複数のバッファスロットBSを含む。複数のバッファスロットBSの各々は1つのページデータを格納することができる。
【0132】
エンティティー領域173はプログラムエンティティーを格納できる複数のエンティティースロットESを含む。複数のエンティティースロットESの各々は1つのプログラムエンティティーを格納することができる。1つのエンティティースロットESは複数のサブスロットSSを含む。1つのエンティティースロットESのサブスロットSSの数は不揮発性メモリ190の1つのワードラインのメモリセルにプログラムされるページデータの数であり得る。1つのサブスロットSSは1つのページデータに対応することができる。即ち、1つのエンティティースロットはバッファ領域171の複数のスロットに対する情報(例えば、アドレス)を格納することができる。1つのエンティティースロットは1つのワードラインにプログラムされるすべてのページデータに対する情報を格納することができる。
【0133】
1つのプログラムエンティティーはバッファ領域171の対応するバッファスロットBSに対する情報(例えば、バッファスロットBSのアドレス)を包含することができる。1つのプログラムエンティティーはバッファ領域171の複数のバッファスロットBSに格納されたデータがプログラムされる不揮発性メモリ190に対する情報(例えば、不揮発性メモリ190のアドレス)を包含することができる。
【0134】
例示的に、エンティティー領域173は複数のエンティティースロットESに基づいて、キューを形成することができる。
【0135】
メモリシステム100にデータ、コマンド、及びアドレスが伝送されない状態で、バッファ領域171及びエンティティー領域173は空いた状態である。
【0136】
メモリマネージャー180のコマンドキュー181は複数のコマンドスロットCSを含む。複数のコマンドスロットCSの各々は第2プロセッサー140の制御によって、バッファメモリ170から伝送されるコマンド(例えば、プログラムエンティティー)を格納するように構成される。メモリマネージャー180はコマンドキュー181に格納されたコマンドにしたがって不揮発性メモリ190を制御するように構成される。
【0137】
メモリシステム100にデータ、コマンド、及びアドレスが伝送されない状態で、コマンドキュー181は空いた状態である。
【0138】
不揮発性メモリ190の1つのメモリブロックは複数のワードラインWL_01〜WL_kを含む。1つのワードラインWLに連結されたメモリセルは複数のページを形成する。1つのページは1つのページデータを格納することができる。例示的に、
図6に図示されたメモリブロックは自由メモリブロックであり得る。
【0139】
以下で、不揮発性メモリ190の自由メモリブロックに対するプログラムが遂行される過程が説明される。
【0140】
図4及び
図7を参照すれば、外部装置(例えば、ホスト)からページデータPD1が受信される(1)。受信されたページデータPD1は第1プロセッサー120及びバッファマネージャー160の制御にしたがって、バッファメモリ170のバッファ領域171のバッファスロットに格納される。例示的に、受信されるページデータPD1は不揮発性メモリ190の第1番目のワードラインWL_01の最下位ページにプログラムされる最下位ページデータであり得る。
【0141】
外部装置(例えば、ホスト)からページデータPD1が受信されることにしたがって、ページデータPD1がプログラムされるメモリブロックが割当され得る。即ち、ステートマシン141は初期状態RSSに進入できる。
【0142】
<初期状態RSS>
受信されたページデータPD1に対応するアドレス及びコマンドが受信される(2)。受信されたアドレス及びコマンドは第1プロセッサーP1及び第2プロセッサーP2の制御にしたがって、第2メモリ150のメッセージキュー151の第1番目のメッセージスロットにメッセージM1として登録(又はエンキュー)される。他の例として、アドレス及びコマンドに基づいて、メッセージM1が生成され、生成されたメッセージM1がメッセージキュー151にエンキューされることができる。
【0143】
例示的に、アドレス及びコマンドはページデータPD1がバッファ領域171に格納された後に、メッセージキュー151にエンキューされることができる。メッセージM1はバッファ領域171に格納されたページデータPD1に対する情報(例えば、バッファスロットのアドレス)及びページデータPD1がプログラムされる不揮発性メモリ190の情報(例えば、割当されたメモリブロックのワードライン(又はページ)のアドレス)を包含することができる。メッセージM1はメッセージM1がプログラムと連関されることを示す情報をさらに包含することができる。
【0144】
メッセージM1及びページデータPD1が受信されたが、メッセージM1及びプログラムデータPD1を管理するプログラムキューPQは割当されていない。したがって、
図8に示したように、メッセージキュー151にメッセージM1が格納されることにしたがって、プログラムキュープール153からプログラムキューPQが割当される。プログラムキューPQは基本ステージQ0〜Q2及び追加ステージQCを包含することができる。各ステージの深さは3であり得る。
【0145】
プログラムキューPQが割当される時、収集エンティティーポインターレジスターGEP及び収集カウントレジスターGNCTがさらに割当され得る。例示的に、収集エンティティーポインターレジスターGEP及び収集カウントレジスターGNCTはプログラムキュープール153から割当され得る。収集エンティティーポインターレジスターGEP及び収集カウントレジスターGNCTはプログラムキューPQの一部に管理され得る。
【0146】
プログラムキューPQが割当されれば、エンティティーポインタープール155からエンティティーポインターEP1が割当され得る。エンティティーポインターEP1はエンティティー領域173のエンティティースロットESの中で1つのエンティティースロットを示す情報(例えば、1つのエンティティースロットのアドレス)を包含することができる。例示的に、エンティティーポインターEP1が割当される時、エンティティー領域173のエンティティースロットESの中で1つがエンティティーポインターEP1と連関されたエンティティースロットに割当され得る。割当されたエンティティーポインターEP1は収集エンティティーポインターレジスターGEPに登録される。
【0147】
収集エンティティーポインターレジスターGEPに登録されたエンティティーポインターに対応するプログラムエンティティーがすべてのページデータに対する情報を蓄積する時まで、エンティティーポインターは収集エンティティーポインターレジスターGEPで管理され得る。
【0148】
例えば、特定なプログラムエンティティーが1つのワードラインのメモリセルにプログラムされるすべてのページデータ(例えば、最下位、中間、及び最上位ページデータ)に対する情報を有しないことがあり得る。この時、特定なプログラムエンティティーを示すエンティティーポインターは収集エンティティーポインターレジスターGEPで管理される。特定なプログラムエンティティーが1つのワードラインのメモリセルにプログラムされるすべてのページデータに対する情報を有する時、特定なプログラムエンティティーはプログラムキューPQの第1番目のステージQ0に登録(又はエンキュー)されることができる。
【0149】
エンティティーポインターEP1が収集エンティティーポインターレジスターGEPに登録される時、収集カウントレジスターGCNTのカウント値は0に設定される。登録されたエンティティーポインターに対応するプログラムエンティティーが1つのページデータに対応する情報を蓄積する時毎に、収集カウントレジスターGCNTのカウント値が増加される。即ち、収集カウントレジスターGCNTのカウント値は、収集エンティティーポインターレジスターGEPで管理されるエンティティーポインターに対応するプログラムエンティティーに蓄積されたページデータに対する情報の数を示し得る。即ち、収集カウントレジスターGCNTのカウント値は、不揮発性メモリ190の1つのワードラインのメモリセルにプログラムされる全体ページデータの中で幾つかのページデータが収集されているかを示し得る。
【0150】
図9を参照すれば、メッセージキュー151に格納されたメッセージM1がエンティティー領域173の第1番目のエンティティースロットに伝送される。例示的に、伝送されたメッセージM1はエンティティー領域173のエンティティースロットにプログラムエンティティーPE1として格納される。例示的に、伝送されたメッセージM1はエンティティー領域173のエンティティースロットの中でエンティティーポインターEP1が示すエンティティースロットに格納され得る。伝送されたメッセージM1はエンティティースロットの第1番目のサブスロットに格納され得る。例示的に、メッセージM1に基づいて、プログラムエンティティーPE1が生成され、生成されたプログラムエンティティーPE1がエンティティースロットESに格納され得る。
【0151】
エンティティー領域173のプログラムエンティティーPE1にページデータPD1に対する情報が格納されることにしたがって、収集カウントレジスターGCNTのカウント値が増加され得る。
【0152】
図10を参照すれば、プログラムエンティティーPE1にページデータPD1に対する情報が格納された後、メッセージM1がメッセージキュー151からリリースされる。メッセージM1がリリースされた後、メッセージキュー151に格納された他のメッセージがシフトされることができる。他の例として、メッセージM1を格納する第1番目のメッセージスロットMSがリリースされることができる。第1番目のメッセージスロットMSがリリースされることにしたがって、第2番目のから位置するメッセージスロットMSがシフトされることができる。
【0153】
図11を参照すれば、外部装置(例えばホスト)からページデータPD2が受信される(1)。受信されたページデータPD2は第1プロセッサー120及びバッファマネージャー160の制御にしたがって、バッファメモリ170のバッファ領域171の空いたバッファスロットBSに格納される。例示的に、受信されるページデータPDは不揮発性メモリ190の第1番目のワードラインWL_01の中間ページにプログラムされるデータであり得る。
【0154】
受信されたページデータPD2に対応するアドレス及びコマンドが受信される(2)。受信されたアドレス及びコマンドは第1プロセッサーP1及び第2プロセッサーP2の制御にしたがって第2メモリ150のメッセージキュー151のメッセージスロットMSにメッセージM2として格納される。例えば、アドレス及びコマンドに基づいて、メッセージM2が生成され、生成されたメッセージM2がメッセージキュー151に格納され得る。
【0155】
説明を簡単にするために、
図7乃至
図10でメッセージキュー151に格納されたメッセージM1がリリースされた後に、
図11でメッセージM2がメッセージキュー151に格納されることと説明される。しかし、メッセージM2は以前メッセージM1のリリースの可否に関わらず、メッセージキュー151にエンキューされることができる。
【0156】
例えば、メッセージキュー151にメッセージM1が第1番目のメッセージスロットMSに格納され得る。メッセージM1が処理され、リリースされる前にメッセージM2が受信され得る。メッセージM2は第2番目のメッセージスロットMSに格納され得る。メッセージキュー151に格納されたメッセージM1、M2は格納された順序にしたがって順次的に処理され、リリースされることができる。
【0157】
プログラムキューPQが生成され、収集エンティティーポインターレジスターGEPで管理されるエンティティーポインターEP1が存在する。したがって、
図12に示したように、メッセージキュー151に格納されたメッセージM2が、エンティティーポインターEP1が示すエンティティースロットに伝送される。メッセージM2はエンティティーポインターEP1が示すエンティティースロットの第2番目のサブスロットに格納され得る。第1番目の及び第2番目のサブスロットに格納された情報が組合されて、プログラムエンティティーPE1が更新され得る。
【0158】
エンティティー領域173のプログラムエンティティーPE1にページデータPD2に対する情報が格納されることにしたがって、収集カウントレジスターGCNTのカウント値が増加され得る。カウント値はエンティティーポインターPE1が2つのページデータ(例えば、最下位ページデータ及び中間ページデータ)に対する情報を収集したことを示し得る。
【0159】
図13を参照すれば、メッセージキュー151に格納されたメッセージM2がリリースされる。
【0160】
図14を参照すれば、外部装置(例えばホスト)からページデータPD3が受信される(1)。受信されたページデータPD3はバッファ領域171の空いたバッファスロットに格納される。例示的に、受信されるページデータPD3は不揮発性メモリ190の第1番目のワードラインWL_01の最上位ページにプログラムされる最上位ページデータであり得る。
【0161】
受信されたページデータPD3に対応するアドレス及びコマンドが受信される(2)。受信されたアドレス及びコマンドはメッセージキュー151にメッセージM3としてエンキューされる。例えば、アドレス及びコマンドに基づいて、メッセージM3が生成され、生成されたメッセージM3がメッセージキュー151にエンキューされることができる。
【0162】
プログラムキューPQが生成され、収集エンティティーポインターレジスターGEPで管理されるエンティティーポインターEP1が存在する。したがって、
図15に示したように、メッセージキュー151に格納されたメッセージM3が、エンティティーポインターEP1が示すエンティティースロットに伝送される。メッセージM3はエンティティーポインターEP1が示すエンティティースロットの第3番目のサブスロットに格納され得る。第1番目乃至第3番目のサブスロットに格納された情報が組合されて、プログラムエンティティーPE1が更新され得る。
【0163】
エンティティー領域173のプログラムエンティティーPE1にページデータPD3に対する情報が格納されることにしたがって、収集カウントレジスターGCNTのカウント値が増加され得る。カウント値はプログラムエンティティーPE1がすべてのページデータ(例えば、最下位ページデータ、中間ページデータ、及び最上位ページデータ)に対する情報を収集したことを示し得る。
【0164】
図16を参照すれば、メッセージキュー151に格納されたメッセージM3がリリースされる。収集カウントレジスターGCNTのカウント値はすべてのページデータが収集されたことを示す。収集エンティティーポインターレジスターGEPに格納されているエンティティーポインターEP1はプログラムキューPQにエンキューされる。例えば、エンティティーポインターEP1はプログラムキューPQの第1番目のステージQ0にエンキューされることができる。エンティティーポインターEP1がエンキューされることにしたがって、収集カウントレジスターGCNTのカウント値がリセットされることができる。
【0165】
エンティティーポインターQ0がプログラムキューPQの第1番目のステージQ0にエンキューされることにしたがって、ステートマシン141は第0状態RS0に進入できる。
【0166】
<第0状態RS0>
図17を参照すれば、プログラムキューPQの第1番目のステージQ0にエンキューされたエンティティーポインターEP1が示すプログラムエンティティーPE1がメモリマネージャー180のコマンドキュー181にエンキューされる。例えば、エンティティーポインターEP1に含まれた情報に基づいて、エンティティー領域173のエンティティースロットESの中でプログラムエンティティーPE1が格納されたエンティティースロットが検出され得る。第2プロセッサー140の制御にしたがって、検出されたエンティティースロットに格納されたプログラム情報(例えば、プログラムエンティティーPE1又はプログラムエンティティー情報)がコマンドキュー181にコマンドC1としてエンキューされることができる。例えば、プログラムエンティティーPE1に基づいて、コマンドC1が生成され、生成されたコマンドC1がコマンドキュー181にエンキューされることができる。第2プロセッサー140はエンティティー領域173からプログラムエンティティーPE1を読み出し、プログラムエンティティーPE1をメモリマネージャー180で使用されるデータ構造に変換することができる。第2プロセッサー140は変換結果をコマンドC1としてコマンドキュー181にエンキューすることができる。
【0167】
図18を参照すれば、コマンドC1がコマンドキュー181にエンキューされることにしたがって、コマンドC1が示すページデータPD1、PD2、PD3が不揮発性メモリ190の第1番目のワードラインに対応するメモリセルにプログラムされる。メモリマネージャー180はコマンドキュー181に格納されたコマンドC1からページデータPD1、PD2、PD3が検出されたバッファスロットのアドレスを検出することができる。メモリマネージャー180はコマンドC1からページデータPD1、PD2、PD3がプログラムされる不揮発性メモリ190のアドレス(例えば、ワードライン又はページアドレス)を検出することができる。検出されたバッファスロットのアドレスに基づいて、ページデータPD1、PD2、PD3がバッファマネージャー160を通じて読み出され得る。読み出されたページデータPD1、PD2、PD3は検出された不揮発性メモリ190のアドレスと共に不揮発性メモリ190に伝送され得る。例えば、ページデータPD1、PD2、PD3の中で少なくとも2つ以上のページデータ(例えば、少なくとも最下位ビットページデータ及び中間ビットページデータ)が不揮発性メモリ190に伝送され得る。
【0168】
例えば、ページデータPD1、PD2、PD3の中で少なくとも2つ以上のページデータ(例えば、少なくとも最下位ビットページデータ及び中間ビットページデータ)が不揮発性メモリ190にプログラムされることができる。プログラムキューPQの第1番目のステージQ0に登録されたエンティティーポインターEP1又はプログラムエンティティーPE1にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で1−ステップするプログラムであり得る。1−ステッププログラムされたメモリセルに連結されたワードラインWL_01は点で満たされたことと図示される。
【0169】
コマンドキューC1のエンキューはプログラムエンティティーPE1に対応するプログラムをイッシューする動作であり得る。コマンドC1がコマンドキュー181にエンキューされることにしたがって、エンティティーポインターEP1はプログラムキューPQの第1番目のステージQ0から第2番目のステージQ1にステージアップされることができる。エンティティーポインターEP1は第2番目のステージQ1にエンキューされることができる。例示的に、エンティティーポインターEP1はコマンドC1がコマンドキュー181にエンキューされた後に、第2番目のステージQ1にエンキューされることができる。エンティティーポインターEP1が第2番目のステージQ1にエンキューされる動作は、ページデータPD1、PD2、PD3がコマンドキュー181にエンキューされたコマンドC1にしたがって不揮発性メモリ190にプログラムされる動作と独立的に遂行されることができる。
【0170】
図19を参照すれば、ページデータPD1、PD2、PD3に基づいたプログラムが終了されることにしたがって、コマンドキュー181に登録されたコマンドC1がリリースされる。この時、コマンドC1に対応するプログラムエンティティーPE1及びページデータPD1、PD2、PD3はリリースされない。
【0171】
図4を参照して説明されたように、エンティティーポインターEP1にしたがうプログラムがイッシューされ、エンティティーポインターEP1がプログラムキューPQの第2番目のステージQ1にエンキューされることにしたがって、ステートマシン141は第1状態RS1に進入できる。
【0172】
<第1状態RS1>
図20を参照すれば、外部装置(例えばホスト)からページデータPD4が受信される(1)。受信されたページデータPD4はバッファ領域171の空いたバッファスロットに格納される。例示的に、受信されるページデータPD4は不揮発性メモリ190の第2番目のワードラインWL_02の最下位ページにプログラムされる最下位ページデータであり得る。
【0173】
受信されたページデータPD4に対応するアドレス及びコマンドが受信される(2)。受信されたアドレス及びコマンドはメッセージキュー151にメッセージM4としてエンキューされる。例えば、アドレス及びコマンドに基づいて、メッセージM4が生成され、生成されたメッセージM4がメッセージキュー151にエンキューされることができる。
【0174】
ページデータPD4がプログラムされるメモリブロックに対応するプログラムキューPQが生成されているので、プログラムキューPQは別に生成されない。収集エンティティーポインターレジスターGEPで管理されるエンティティーポインターが存在しないので、エンティティーポインタープール155から新しいエンティティーポインターEP2が割当され得る。エンティティーポインターEP2は収集エンティティーポインターレジスターGEPに登録され得る。例えば、エンティティーポインターEP2は1つの空いたエンティティースロットと共に割当され得る。
【0175】
図21を参照すれば、メッセージキュー151に格納されたメッセージM4が、エンティティーポインターEP2が示すエンティティースロットに伝送される。メッセージM4はエンティティーポインターEP1が示すエンティティースロットの第1番目のサブスロットにプログラムエンティティーPE2として格納され得る。
【0176】
エンティティー領域173のプログラムエンティティーPE2にページデータPD4に対する情報が格納されることにしたがって、収集カウントレジスターGCNTのカウント値が増加され得る。カウント値はプログラムエンティティーPE2が1つのページデータ(例えば、最下位ページのデータ)に対する情報を収集したことを示し得る。
【0177】
図22を参照すれば、メッセージキュー151に格納されたメッセージM4がリリースされる。
【0178】
図11乃至
図13を参照して説明されたように、プログラムエンティティーPE2に対応する1つのページデータ(例えば、中間ページデータ)が収集されることができる。また、
図14乃至
図16を参照して説明されたように、プログラムエンティティーPE2に対応する他の1つのページデータ(例えば、最上位ページデータ)が収集されることができる。
【0179】
プログラムエンティティーPE2に対応するすべてのページデータが収集された例が
図23に図示される。
図23で、プログラムエンティティーPE2に対応する中間ページデータはPD5であり、最上位ページデータはPD6であり得る。
【0180】
プログラムエンティティーPE2に対応するすべてのページデータが収集されれば、収集カウントレジスターGCNTのカウント値は3であり得る。カウント値に応答して、プログラムエンティティーPE2を示すエンティティーポインターEP2はプログラムキューPQの第1番目のステージQ0にエンキューされることができる。エンティティーポインターEP2が第1番目のステージQ0にエンキューされれば、収集カウントレジスターGCNTのカウント値はリセットされることができる。
【0181】
図24を参照すれば、エンティティーポインターEP2がプログラムキューPQの第1番目のステージQ0にエンキューされることにしたがって、エンティティーポインターEP2が示すプログラムエンティティーPE2のプログラム情報がコマンドC2としてコマンドキュー181にエンキューされる。プログラムエンティティーPE2に基づいて、コマンドC2が生成され、生成されたコマンドC2がコマンドキュー181にエンキューされることができる。
【0182】
図25を参照すれば、コマンドC2がコマンドキュー181にエンキューされることにしたがって、プログラムエンティティーPE2が示すページデータPD4、PD5、PD6に基づいて、プログラムエンティティーPE2が示すワードラインWL_02のメモリセルがプログラムされる。例えば、ページデータPD4、PD5、PD6の中で少なくとも2つ以上のページデータ(例えば、少なくとも最下位ページデータ及び中間ページデータ)が不揮発性メモリ190に伝送され得る。例えば、ページデータPD4、PD5、PD6の中で少なくとも2つのページデータ(例えば、少なくとも最下位ページデータ及び中間ページデータ)が不揮発性メモリ190にプログラムされることができる。プログラムキューPQの第1番目のステージQ0に登録されたエンティティーポインターEP2又はプログラムエンティティーPE2にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で1−ステップするプログラムであり得る。1−ステッププログラムされたメモリセルに連結されたワードラインWL_02は点で満たされたことと図示される。
【0183】
コマンドC2がコマンドキュー181にエンキューされることにしたがって、コマンドC2のエンキューを誘発したエンティティーポインターEP2はプログラムキューPQの次のステージQ1にエンキューされることができる。
【0184】
図4を参照して説明されたように、第1状態RS1にしたがってプログラムキューPQの第1番目のステージQ0に登録されたエンティティーポインターEP2に基づいたプログラムがイッシューされ、エンティティーポインターEP2が次のステージQ1にエンキューされれば、ステートマシン141は第2状態RS2に進入できる。
【0185】
図26を参照すれば、ページデータPD4、PD5、PD6に基づいたプログラムが終了されれば、コマンドC2はコマンドキュー181からリリースされる。この時、コマンドC2に対応するプログラムエンティティーPE2及びページデータPD4、PD5、PD6はリリースされない。
【0186】
説明を簡単にするために、エンティティーポインターEP2に基づいたプログラムが終了された後、ステートマシン141が第2状態RS2に進入する例が説明される。しかし、ステートマシン141はエンティティーポインターEP2のエンキューに応答してコマンドC2がコマンドキュー181にエンキューされることにしたがって、第2状態RS2に進入できる。ステートマシン141は不揮発性メモリ190でコマンドC2にしたがうプログラムが遂行の中であっても、第2状態RS2に進入できる。ステートマシン141はコマンドC2がリリースされる前に第2状態RS2に進入できる。
【0187】
<第2状態RS2>
図4及び
図27を参照すれば、プログラムキューPQの第2番目のスロットQ1に登録された第1番目のエンティティーポインターEP1に基づいた動作が遂行される。例えば、エンティティーポインターEP1が示すプログラムエンティティーPE1のプログラム情報がコマンドC3としてコマンドキュー181にエンキューされる。プログラムエンティティーPE1に基づいて、コマンドC3が生成され、生成されたコマンドC3がコマンドキュー181にエンキューされることができる。
【0188】
図28を参照すれば、コマンドC3がコマンドキュー181にエンキューされることにしたがって、プログラムエンティティーPE1が示すページデータPD1、PD2、PD3に基づいて、プログラムエンティティーPE1が示すワードラインWL_01のメモリセルがプログラムされる。プログラムキューPQの第2番目のステージQ1に登録されたエンティティーポインターEP1又はプログラムエンティティーPE1にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で粗い(coarse)するプログラムであり得る。粗いプログラムされたメモリセルに連結されたワードラインWL_02は斜線で満たされたことと図示される。
【0189】
コマンドC3がコマンドキュー181にエンキューされることにしたがって、コマンドC3のエンキューを誘発したエンティティーポインターEP1はプログラムキューPQの次のステージQ2にエンキューされることができる。
【0190】
図4を参照して説明されたように、第2状態RS2にしたがってプログラムキューPQの第2番目のステージQ1に登録されたエンティティーポインターEP1に基づいたプログラムがイッシューされれば、ステートマシン141は第3状態RS3に進入できる。
【0191】
図29を参照すれば、ページデータPD1、PD2、PD3に基づいたプログラムが終了されれば、コマンドC3はコマンドキュー181からリリースされる。この時、コマンドC3に対応するプログラムエンティティーPE1及びページデータPD1、PD2、PD3はリリースされない。
【0192】
図30は本発明の実施形態によるメモリコントローラMCの動作方法の第3例を示す順序図である。例示的に、
図5に図示された動作に後続する動作が
図30に図示される。
図1、
図3、
図4、及び
図30を参照すれば、S310段階で、第3ページデータが受信され、受信された第3ページデータがバッファメモリ170に格納される。第3ページデータは不揮発性メモリ190の第3ワードラインWL_03に連結されたメモリセルにプログラムされるページデータであり得る。第3データは最下位ページデータであり得る。
【0193】
S320段階で、バッファメモリ170に格納された第3ページデータを示す第3プログラムエンティティーが生成される。生成された第3プログラムエンティティーはバッファメモリ170に格納される。
【0194】
第3ワードラインWL_03のメモリセルにプログラムされるすべてのデータが受信されれば、第3プログラムエンティティーがプログラムキューPQにエンキューされることができる。
【0195】
S330段階で、第3プログラムエンティティーのプログラム情報がメモリマネージャー180に伝送される。そして、第3ページデータを含むページデータ(例えば、第3ワードラインWL_03にプログラムされる2又はその以上のページデータ)が第3プログラムエンティティーのプログラム情報に基づいて、メモリマネージャー180によって不揮発性メモリ190に伝送される。
【0196】
S310段階乃至S330段階はステートマシン141の第3状態RS3に対応することができる。ステートマシン141は第3ワードラインWL_03に対応する第3プログラムエンティティーに基づいて、第3ワードラインWL_03に連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン141は第3プログラムエンティティーをプログラムキューPQの次のステージにエンキューすることができる。
【0197】
S340段階で、第2プログラムエンティティーのプログラム情報がメモリマネージャー180に伝送される。そして、第2データがメモリマネージャー180によって第2プログラムエンティティーのプログラム情報に基づいて、不揮発性メモリ190に伝送される。
【0198】
S340段階はステートマシン141の第4状態RS4に対応することができる。ステートマシン141は第2ワードラインWL_02のメモリセルに対応する第2プログラムエンティティーに基づいて、第2ワードラインLW_02に連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン141は第2プログラムエンティティーをプログラムキューPQの次のステージにエンキューすることができる。
【0199】
S350段階で、第1プログラムエンティティーのプログラム情報がメモリマネージャー180に伝送される。そして、第1データが第1プログラムエンティティーのプログラム情報に基づいて、メモリマネージャー180によって不揮発性メモリ190に伝送される。
【0200】
S350段階はステートマシン141の第5状態RS5に対応することができる。ステートマシン141は第1ワードラインWL_01に対応する第1プログラムエンティティーに基づいて、第1ワードラインWL_01に連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン141は第1プログラムエンティティーをプログラムキューPQの次のステージにエンキューすることができる。
【0201】
図31乃至
図41は
図30に図示された動作方法によってメモリシステムでデータが処理される過程を示す。以下で、
図30を参照して説明されたように、ステートマシン141の動作が第3状態RS3から説明される。
【0202】
<第3状態RS3>
図4、
図30、及び
図41を参照すれば、外部装置(例えばホスト)からページデータPD7が受信される(1)。受信されたページデータPD7はバッファ領域171の空いたバッファスロットに格納される。例示的に、受信されるページデータPD7は不揮発性メモリ190の第3番目のワードラインWL_03の最下位ページにプログラムされる最下位ページデータであり得る。
【0203】
受信されたページデータPD7に対応するアドレス及びコマンドが受信される(2)。受信されたアドレス及びコマンドはメッセージキュー151にメッセージM5としてエンキューされる。例えば、アドレス及びコマンドに基づいて、メッセージM5が生成され、生成されたメッセージM5がメッセージキュー151にエンキューされることができる。
【0204】
ページデータPD7がプログラムされるメモリブロックに対応するプログラムキューPQが生成されるので、プログラムキューPQは別に生成されない。収集エンティティーポインターレジスターGEPで管理されるエンティティーポインターが存在しないので、エンティティーポインタープール155から新しいエンティティーポインターEP3が割当され得る。エンティティーポインターEP3は収集エンティティーポインターレジスターGEPに登録され得る。エンティティーポインターEP3はエンティティー領域173のエンティティースロットの中で1つの空いたエンティティースロットを示し得る。例えば、エンティティーポインターEP3は1つの空いたエンティティースロットと共に割当され得る。
【0205】
以後に、
図21及び
図22を参照して説明されたように、エンティティーポインターEP3に対応するプログラムエンティティーPE3がエンティティー領域173に格納され得る。
【0206】
図11乃至
図13を参照して説明されたように、プログラムエンティティーPE3に対応する1つのページデータ(例えば、中間ページデータ)が収集されることができる。また、
図14乃至
図16を参照して説明されたように、プログラムエンティティーPE3に対応する他の1つのページデータ(例えば、最上位ページデータ)が収集されることができる。
【0207】
プログラムエンティティーPE3に対応するすべてのページデータが収集された例が
図32に図示される。
図32で、プログラムエンティティーPE3に対応する中間ページデータはPD8であり、最上位ページデータはPD9であり得る。
【0208】
プログラムエンティティーPE2に対応するすべてのページデータが収集されれば、プログラムエンティティーPE3を示すエンティティーポインターEP3はプログラムキューPQの第1番目のステージQ0にエンキューされることができる。
【0209】
図4、
図30、及び
図33を参照すれば、エンティティーポインターEP3がプログラムキューPQの第1番目のステージQ0にエンキューされることにしたがって、エンティティーポインターEP3が示すプログラムエンティティーPE3がコマンドC4としてコマンドキュー181にエンキューされる。他の例として、プログラムエンティティーPE3に基づいて、コマンドC4が生成され、生成されたコマンドC4がコマンドキュー181にエンキューされることができる。
【0210】
図34を参照すれば、コマンドC4がコマンドキュー181にエンキューされることにしたがって、プログラムエンティティーPE3が示すページデータPD7、PD8、PD9に基づいて、プログラムエンティティーPE3が示すワードラインWL_03のメモリセルがプログラムされる。例えば、ページデータPD7、PD8、PD9の中で少なくとも2つ以上のページデータ(例えば、少なくとも最下位ビットページデータ及び中間ビットページデータ)が不揮発性メモリ190に伝送され得る。例えば、ページデータPD7、PD8、PD9の中で少なくとも2つ以上のページデータ(例えば、少なくとも最下位ビットページデータ及び中間ビットページデータ)が不揮発性メモリ190にプログラムされることができる。プログラムキューPQの第1番目のステージQ0に登録されたエンティティーポインターEP3又はプログラムエンティティーPE3にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で1−ステップするプログラムであり得る。1−ステッププログラムされたメモリセルに連結されたワードラインWL_03は点で満たされたことと図示される。
【0211】
コマンドC4がコマンドキュー181にエンキューされることにしたがって、コマンドC4のエンキューを誘発したエンティティーポインターEP3はプログラムキューPQの次のステージQ1にエンキューされることができる。
【0212】
図35を参照すれば、ページデータPD7、PD8、PD9に基づいたプログラムが終了されれば、コマンドC4はコマンドキュー181からリリースされる。この時、コマンドC4に対応するプログラムエンティティーPE3及びページデータPD7、PD8、PD9はリリースされない。
【0213】
図4を参照して説明されたように、第3状態RS3にしたがってプログラムキューPQの第1番目のステージQ0に登録されたエンティティーポインターEP3に基づいたプログラムがイッシューされ、エンティティーポインターEP3がプログラムキューPQの次のステージにエンキューされれば、ステートマシン141は第4状態RS4に進入できる。
【0214】
説明を簡単にするために、エンティティーポインターEP3に基づいたプログラムが終了された後、ステートマシン141が第4状態RS4に進入する例が説明される。しかし、ステートマシン141はエンティティーポインターEP3のエンキューに応答してコマンドC4がコマンドキュー181にエンキューされることにしたがって、第4状態RS4に進入できる。ステートマシン141は不揮発性メモリ190でコマンドC4にしたがうプログラムが遂行の中であっても、第4状態RS4に進入できる。ステートマシン141はコマンドC4がリリースされる前に第4状態RS4に進入できる。
【0215】
<第4状態RS4>
図4及び
図36を参照すれば、コマンドC4にしたがうプログラムがイッシューされることにしたがって、プログラムキューPQの第2番目のスロットQ1に登録された第1番目のエンティティーポインターEP2に基づいた動作が遂行される。例えば、エンティティーポインターEP2が示すプログラムエンティティーPE2がコマンドC5としてコマンドキュー181にエンキューされる。他の例として、プログラムエンティティーPE2に基づいて、コマンドC5が生成され、生成されたコマンドC5がコマンドキュー181にエンキューされることができる。
【0216】
図37を参照すれば、コマンドC5がコマンドキュー181にエンキューされることにしたがって、プログラムエンティティーPE2が示すページデータPD4、PD5、PD6に基づいて、プログラムエンティティーPE2が示すワードラインWL_02のメモリセルがプログラムされる。プログラムキューPQの第2番目のステージQ1に登録されたエンティティーポインターEP2又はプログラムエンティティーPE2にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で粗い(coarse)するプログラムであり得る。粗いプログラムされたメモリセルに連結されたワードラインWL_02は斜線で満たされたことと図示される。
【0217】
コマンドC5がコマンドキュー181にエンキューされることにしたがって、コマンドC5のエンキューを誘発したエンティティーポインターEP2はプログラムキューPQの次のステージQ2にエンキューされることができる。
【0218】
図38を参照すれば、ページデータPD4、PD5、PD6に基づいたプログラムが終了されれば、コマンドC5はコマンドキュー181からリリースされる。この時、コマンドC5に対応するプログラムエンティティーPE2及びページデータPD4、PD5、PD6はリリースされない。
【0219】
図4を参照して説明されたように、第4状態RS4にしたがってプログラムキューPQの第2番目のステージQ1に登録されたエンティティーポインターEP2に基づいたプログラムがイッシューされ、エンティティーポインターEP2がプログラムキューPQの次のステージにエンキューされれば、ステートマシン141は第5状態RS5に進入できる。
【0220】
<第5状態RS5>
図4及び
図39を参照すれば、コマンドC5にしたがうプログラムがイッシューされることにしたがって、プログラムキューPQの第3番目のスロットQ0に登録された第1番目のエンティティーポインターEP1に基づいた動作が遂行される。例えば、エンティティーポインターEP1が示すプログラムエンティティーPE1がコマンドC6としてコマンドキュー181にエンキューされる。他の例として、プログラムエンティティーPE1に基づいて、コマンドC6が生成され、生成されたコマンドC6がコマンドキュー181にエンキューされることができる。
【0221】
図40を参照すれば、コマンドC6がコマンドキュー181にエンキューされることにしたがって、プログラムエンティティーPE1が示すページデータPD1、PD2、PD3に基づいて、プログラムエンティティーPE1が示すワードラインWL_01のメモリセルがプログラムされる。プログラムキューPQの第3番目のステージQ2に登録されたエンティティーポインターEP1又はプログラムエンティティーPE1にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で精巧な(fine)するプログラムであり得る。精巧なプログラムされたメモリセルに連結されたワードラインWL_01は粗いプログラムされたメモリセルに表示された斜線と反対方向の斜線で満たされたことと図示される。
【0222】
コマンドC6がコマンドキュー181にエンキューされることにしたがって、コマンドC6のエンキューを誘発したエンティティーポインターEP1はプログラムキューPQの次のステージQCにエンキューされることができる。
【0223】
図41を参照すれば、ページデータPD1、PD2、PD3に基づいたプログラムが終了されれば、コマンドC6はコマンドキュー181からリリースされる。この時、コマンドC6に対応するプログラムエンティティーPE1及びページデータPD1、PD2、PD3はリリースされない。
【0224】
例示的に、プログラムキューPQに追加ステージQCが存在しなく、基本ステージQ0〜Q2のみが存在する場合、エンティティーポインターEP1はリリースされることができる。エンティティーポインターEP1がリリースされれば、エンティティーポインターEP1に対応するプログラムエンティティーPE1及びページデータPD1、PD2、PD3がバッファメモリ170からリリースされることができる。
【0225】
第5状態RS5にしたがう動作が遂行された後、ステートマシン141は第3状態RS3又は第6状態RS6に進入できる。
【0226】
例示的に、不揮発性メモリ190の割当されたメモリブロックの最後のワードラインWL_kにプログラムされるすべてのページデータがバッファメモリ170に格納されていない場合、ステートマシン141は第3状態RS3に進入できる。例えば、
図41に示したように第3番目のワードラインWL_03までプログラムが遂行された場合、次のワードラインWL_04にプログラムされるすべてのページデータが受信される時まで、ステートマシン141は第3状態RS3で待機することができる。
【0227】
次のワードラインWL_04にプログラムされるすべてのページデータが受信されれば、第3状態RS3で、次のワードラインWL_04に対して1−ステッププログラムが遂行されることができる。第4状態RS4でワードラインWL_03に対して粗いプログラムが遂行されることができる。第5状態RS5でワードラインWL_02に対して精巧なプログラムが遂行されることができる。
【0228】
即ち、第3状態RS3でワードラインWL_i(iはkより小さい整数)のページデータが受信され、ワードラインWL_iに対応するエンティティーポインターEPi及びプログラムエンティティーPEiが生成され得る。エンティティーポインターEPiがプログラムキューPQの第1番目のステージQ0にエンキューされることにしたがって、ワードラインWL_iに対して1−ステッププログラムが遂行されることができる。エンティティーポインターEPiはプログラムキューPQの第2番目のステージQ1にエンキューされることができる。
【0229】
第4状態RS4で、プログラムキューPQの第2番目のステージQ1に登録された第1番目のエンティティーポインターEPi−1にしたがって、ワードラインWL_i−1に対して粗いプログラムが遂行されることができる。エンティティーポインターEPi−1はプログラムキューPQの第3番目のステージQ2にエンキューされることができる。
【0230】
第5状態RS5で、プログラムキューPQの第3番目のステージQ2に登録された第1番目のエンティティーポインターEPi−2にしたがって、ワードラインWL_i−2に対して精巧なプログラムが遂行されることができる。エンティティーポインターEP_i−2はプログラムキューPQの追加ステージQCにエンキューされることができる。
【0231】
第3状態RS3で、不揮発性メモリ190の割当されたメモリブロックの最後のワードラインWL_kのページデータが受信され得る。ワードラインWL_kに対応するエンティティーポインターEPk及びプログラムエンティティーPEkが生成され得る。エンティティーポインターEPkがプログラムキューPQの第1番目のステージQ0にエンキューされることにしたがって、ワードラインWL_kに対して1−ステッププログラムが遂行されることができる。エンティティーポインターEPkはプログラムキューPQの第2番目のステージQ1にエンキューされることができる。
【0232】
第4状態RS4で、プログラムキューPQの第2番目のステージQ1に登録された第1番目のエンティティーポインターEPk−1にしたがって、ワードラインWL_k−1に対して粗いプログラムが遂行されることができる。エンティティーポインターEPk−1はプログラムキューPQの第3番目のステージQ2にエンキューされることができる。
【0233】
第5状態RS5で、プログラムキューPQの第3番目のステージQ2に登録された第1番目のエンティティーポインターEPk−2にしたがって、ワードラインWL_k−2に対して精巧なプログラムが遂行されることができる。エンティティーポインターEP_k−1はプログラムキューPQの追加ステージQCにエンキューされることができる。
【0234】
この状態で、割当されたメモリブロックの最後のワードラインWL_kに対応するページデータはバッファ領域171に格納されている。したがって、ステートマシン141は割当されたメモリブロックが満ちていたことと判断し、第6状態RS6に進入できる。
【0235】
第6状態RS6で、プログラムキューPQの第2番目のステージQ1に格納された第1番目のエンティティーポインターEPkにしたがって、ワードラインWL_kに対して粗いプログラムが遂行されることができる。エンティティーポインターEPkはプログラムキューPQの第3番目のステージQ2にエンキューされることができる。
【0236】
第7状態RS7で、プログラムキューPQの第3番目のステージQ2に格納された第1番目のエンティティーポインターEPk−1にしたがって、ワードラインWL_k−1に対して精巧なプログラムが遂行されることができる。エンティティーポインターEPk−1はプログラムキューPQの追加ステージQCにエンキューされることができる。
【0237】
第8状態RS8で、プログラムキューPQの第3番目のステージQ2に格納された第1番目のエンティティーポインターEPkにしたがって、ワードラインWL_kに対して精巧なプログラムが遂行されることができる。エンティティーポインターEPkはプログラムキューPQの追加ステージQCにエンキューされることができる。
【0238】
ステートマシン141の状態にしたがってダイレクトリプログラムが遂行される順序が表1に記載される。
【0240】
終了状態RSEで、プログラムキューPQがリリースされ、割当されたブロックが閉じられる。プログラムキューPQがリリースされる時、プログラムキューPQと連関されたエンティティーポインターEP、プログラムエンティティーPE、及びページデータが共にリリースされることができる。
【0241】
例示的に、
図5乃至
図41で、本発明の技術的思想を簡潔であり、明確に説明するために、1つのワードラインに対するプログラムが終了された後に、次のワードラインに対するプログラム要請が受信されることと説明された。しかし、メモリコントローラMCは複数の要請を非同期式に(asynchronous)又はパイプライン(pipeline)方式に処理することができる。
【0242】
例えば、第1プロセッサー120はメモリコントローラMCに属する他の装置の動作状態に関わらず、外部装置(例えば、ホスト)から受信されるデータをバッファ領域171に格納することができる。第1プロセッサー120はバッファ領域171に空いたスロットが存在する限り、外部装置から受信されるデータをバッファ領域171に格納することができる。
【0243】
第1プロセッサー120はメモリコントローラMCに属する他の装置の動作状態に関わらず、外部装置(例えば、ホスト)から受信されるコマンド又はアドレスをメッセージMとしてメッセージキュー151に格納することができる。第1プロセッサー120はメッセージキュー151に空いたスロットが存在する限り、メッセージキュー151に新しいメッセージMを登録することができる。
【0244】
第2プロセッサー140はメモリコントローラMCに属する他の装置の動作状態に関わらず、メッセージキュー151に格納されたメッセージMを順次的に処理することができる。第2プロセッサー140はメッセージキュー151に登録された順に、メッセージキュー151に格納されたメッセージMを順次的に処理することができる。メッセージキュー151に格納されたメッセージMを処理する動作は、プログラムキューPQを割当する動作、エンティティーポインターEPを割当する動作、プログラムエンティティーPEを割当する動作、予め割当されたプログラムエンティティーPEにメッセージを追加する動作、エンティティーポインターPEのカウントを管理する動作、エンティティーポインターPEをプログラムキューPQにエンキューする動作の中で少なくとも1つを包含することができる。
【0245】
第2プロセッサー140はメモリコントローラMCに属する他の装置の動作状態に関わらず、プログラムキューPQに登録されたエンティティーポインターEPを順次的に処理することができる。第2プロセッサー140はプログラムキューPQに登録されたエンティティーポインターEPに基づいて、
図4に図示された状態図にしたがって動作することができる。
図4の状態図を参照して説明された条件が充足されれば、第2プロセッサー140はメモリコントローラMCに属する他の装置の動作状態に関わらず、次の状態に進入しエンティティーポインターEPにしたがう動作を遂行することができる。エンティティーポインターEPにしたがう動作はプログラムエンティティーPEをコマンドキュー181にエンキューする動作を包含することができる。
【0246】
メモリマネージャー180はメモリコントローラMCに属する他の装置の動作状態に関わらず、コマンドキュー181に登録されたコマンドCを順次的に処理することができる。メモリマネージャー180はコマンドキュー181に登録された順に、コマンドキュー181に格納されたコマンドCを順次的に処理することができる。メモリマネージャー180がコマンドCを処理する動作は、コマンドCに応答してバッファ領域171に格納されたページデータを不揮発性メモリ190に伝送する動作又は不揮発性メモリ190にプログラムコマンドを伝送する動作を包含することができる。
【0247】
図42は不揮発性メモリ190で1−ステッププログラム、粗いプログラム、及び精巧なプログラムが遂行される時、メモリセルの閾値電圧の変化を示すグラフである。
図42で、横軸はメモリセルの閾値電圧を示し、縦軸はメモリセルの個数を示す。即ち、
図42はメモリセルの閾値電圧散布を示す。
【0248】
図18及び
図42の参照番号21を参照すれば、第1ワードラインWL_01で1−ステッププログラムが遂行される。1−ステッププログラムが遂行されれば、最下位ページデータPD1と中間ページデータPD2にしたがって第1ワードラインWL_01に連結されたメモリセルがプログラムされる。メモリセルは消去状態(erased)及び中間プログラム状態Q1、Q2、Q3にプログラムされることができる。
【0249】
図25及び
図42の参照番号22を参照すれば、第2ワードラインWL_02で1−ステッププログラムが遂行される。この時、第1ワードラインWL_01に連結されたメモリセルの閾値電圧散布はカップリングの影響によって広くなり得る。
【0250】
図28及び
図42の参照番号23を参照すれば、第1ワードラインWL_01で粗いプログラムが遂行される。粗いプログラムが遂行されれば、最下位ページデータPD1、中間ページデータPD2、及び最上位ページデータPD3に基づいて、第1ワードラインWL_01に連結されたメモリセルがプログラムされる。メモリセルは消去状態及び中間プログラム状態P1’、P2’、P3’、P4’、P5’、P6’、P7’にプログラムされることができる。
【0251】
図37及び
図42の参照番号24を参照すれば、第2ワードラインWL_02で粗いプログラムが遂行される。第2ワードラインWL_02で粗いプログラムが遂行される時、第1ワードラインWL_01に連結されたメモリセルの閾値電圧散布はカップリングの影響によって広くなり得る。
【0252】
図40及び
図42の参照番号25を参照すれば、第1ワードラインWL_01で精巧なプログラムが遂行される。精巧なプログラムが遂行されれば、最下位ページデータPD1、中間ページデータPD2、及び最上位ページデータPD3に基づいて、第1ワードラインWL_01に連結されたメモリセルがプログラムされる。メモリセルは消去状態及びプログラム状態P1、P2、P3、P4、P5、P6、P7にプログラムされることができる。
【0253】
図42の参照番号26を参照すれば、第2ワードラインWL_02で精巧なプログラムが遂行される時、第1ワードラインWL_01に連結されたメモリセルの閾値電圧散布はカップリングの影響によって広くなり得る。
【0254】
図42に示したように、ダイレクトリプログラムは1−ステッププログラム、粗いプログラム及び精巧なプログラムの順序に遂行される。1−ステッププログラム、粗いプログラム及び精巧なプログラムは隣接するワードラインから伝達されるカップリングを考慮して、漸進的に向上される精密度を有することができる。1−ステッププログラム、粗いプログラム及び精巧なプログラムは不揮発性メモリ190に格納されたデータではない、バッファメモリ170に格納されたデータに基づいて、遂行される。したがって、1−ステッププログラム、粗いプログラム及び精巧なプログラムが順次的に遂行される時、隣接するワードラインからのカップリングが累積されることが防止される。
【0255】
例示的に、不揮発性メモリ190の1つのワードラインは3つのプログラムアドレス及び3つの読出しアドレスを有することができる。3つのプログラムアドレスは各々1−ステッププログラム、粗いプログラム、及び精巧なプログラムに対応することができる。プログラムの時に、メモリマネージャー180は3つのプログラムアドレスの中で1つと1つのプログラムコマンドを不揮発性メモリ190に伝送することができる。読出しの時に、メモリマネージャー180は3つの読出しアドレスの中で1つと読出しコマンドを不揮発性メモリ190に伝送することができる。3つの読出しアドレスは各々最下位ページ、中間ページ、及び最上位ページに対応することができる。
【0256】
例示的に、不揮発性メモリ190の1つのワードラインは1つのプログラムアドレス及び3つの読出しアドレスを有することができる。プログラムの時に、メモリマネージャー180は1つのプログラムアドレス及び1−ステッププログラム、粗いプログラム、又は精巧なプログラムを示すプログラムコマンドを不揮発性メモリ190に伝送することができる。読出しの時に、メモリマネージャー180は3つの読出しアドレスの中で1つと読出しコマンドを不揮発性メモリ190に伝送することができる。3つの読出しアドレスは各々最下位ページ、中間ページ、及び最上位ページに対応することができる。
【0257】
図43は本発明の実施形態によるメモリコントローラMCの動作方法の第4例を示す順序図である。例示的に、ステートマシン141が特定な状態で以前状態に復帰するロールバック(rollback)動作が
図43に図示される。
【0258】
図43を参照すれば、S410段階で、ロールバックが必要であるか否かが判別される。例えば、コマンドキュー181にエンキューされたが、不揮発性メモリ190に未だプログラムされないコマンドの取消しが要求される時、ロールバックが必要であることと判別され得る。例えば、コマンドキュー181に複数のコマンドがエンキューされた状態で、プログラムキューPQに対応するメモリブロックに対する読出し要請が発生することができる。コマンドキュー181にエンキューされたコマンドにしたがうプログラムが中止され、要請された読出しが遂行されることができる。要請された読出しがフェイルされれば、メモリブロックのプログラム又は読出し電圧条件を調節する動作が遂行されることができる。この時、イッシューされたプログラムの取消しが必要であることと判別され得る。
【0259】
S420段階で、ステートマシン141の状態が以前の目標状態にプログラム戻される。
【0260】
S430段階で、ステートマシン141の状態の戻されることにしたがって、プログラムキューPQのエンティティーポインターが戻された状態に合わせるように調節される。
【0261】
例示的に、ロールバックはコマンドキュー181に格納された各コマンドに対して順次的に遂行されることができる。第2プロセッサー140はコマンドキュー181にエンキューされた最後のコマンドが不揮発性メモリ190にイッシューされたか否か判別することができる。例えば、第2プロセッサー140はメモリマネージャー180から最後のコマンドがイッシューされたことを知らせるインタラプトが受信されたか否かを判別し、判別結果にしたがって最後のコマンドが不揮発性メモリ190にイッシューされたか否か判別することができる。最後のコマンドが不揮発性メモリ190にイッシューされたら、ロールバックは遂行されない。
【0262】
最後のコマンドが不揮発性メモリ190にイッシューされなかったら、最後のコマンドがコマンドキュー181からリリースされることができる。ステートマシン141は現状態の直前の状態にロールバックされ得る。プログラムキューPQまた現状態の直前の状態に調節され得る。リリースされたコマンドはメッセージキュー151に復元され得る。以後に、コマンドキュー181にエンキューされた最後のコマンドに対して同一の動作が反復的に遂行されることができる。
【0263】
図4及び表1にしたがって、1−ステッププログラムがコマンドキュー181にイッシューされた後、そして1−ステッププログラムが不揮発性メモリ190にイッシューされる前に、ステートマシン141で遂行されるコールバックの例が表2に記載される。例示的に、1つのコマンドが取消される例が表2に図示される。
【0265】
図4及び表1にしたがって、粗いプログラムがコマンドキュー181にイッシューされた後、そして粗いプログラムが不揮発性メモリ190にイッシューされる前に、ステートマシン141で遂行されるコールバックの例が表3に記載される。例示的に、1つのコマンドが取消される例が表3に図示される。
【0267】
図4及び表1にしたがって、精巧なプログラムがコマンドキュー181にイッシューされた後、そして精巧なプログラムが不揮発性メモリ190にイッシューされる前に、ステートマシン141で遂行されるコールバックの例が表4に記載される。例示的に、1つのコマンドが取消される例が表4に図示される。
【0269】
図44は本発明の実施形態によるメモリコントローラMCの動作方法の第5例を示す順序図である。例示的に、メモリコントローラMCがエンティティーポインターEPをリリースする第1例が
図44に図示される。
【0270】
図41及び
図44を参照すれば、S510段階で、予め定まれた数のエンティティーポインターがプログラムキューPQの追加ステージQCに蓄積されたか否かを判別される。予め定まれた数のエンティティーポインターが追加ステージQCに蓄積されなかったら、別の動作は遂行されない。予め定まれた数のエンティティーポインターが追加ステージQCに蓄積されていれば、S520段階が遂行される。予め定まれた数は2又はその以上の数であり得る。
【0271】
S520段階で、追加ステージQCに最初にエンキューされたエンティティーポインターがリリースされる。リリースされるエンティティーポインターと連関されたプログラムエンティティー及びページデータが共にリリースされることができる。
【0272】
図42の参照番号25及び26を参照して説明されたように、特定なワードラインで精巧なプログラムが遂行され、特定なワードラインの次のワードラインで精巧なプログラムが遂行された後に、特定なワードラインの閾値電圧が最終的に安定化されることができる。追加ステージQCは特定なワードラインのエンティティーポインターを次のワードラインの精巧なプログラムが遂行される時まで維持することができる。
【0273】
特定なワードラインのエンティティーポインターが追加ステージQCに維持されれば、第1プロセッサー120は特定なワードラインのプログラムが完了されないことと認識できる。したがって、外部装置から特定なワードラインにプログラムされたデータに対する読出し要請が受信される時、第1プロセッサー120はバッファメモリ170に格納されたデータを出力することができる。
【0274】
特定なワードラインのエンティティーポインターが追加ステージQCからリリースされれば、第2プロセッサー140はエンティティーポインター及びプログラムエンティティーに含まれた情報に基づいて、第1プロセッサー120にプログラムが完了されたことを知らせる信号を伝送することができる。以後に、外部装置から特定なワードラインにプログラムされたデータに対する読出し要請が受信されれば、第1プロセッサー120は第2プロセッサー140に読出し要請を伝達することができる。第2プロセッサー140は特定なワードラインにプログラムされたデータを読み出し、読み出されたデータをホストプロセッサー120及びホストインターフェイス125を通じて外部装置に出力することができる。
【0275】
即ち、追加ステージQCが提供されれば、特定なワードラインのメモリセルの閾値電圧が安定化された後に、特定なワードラインのメモリセルに対する読出しが遂行されることができる。したがって、メモリシステム100の信頼性が向上される。
【0276】
例示的に、メモリブロックの最後のワードラインWLkに対応するエンティティーポインターは追加ステージQCにエンキューされないことがあり得る。
【0277】
図45は
図41の状態からエンティティーポインターPE1がリリースされた例を示す。
図41と比較すれば、追加ステージQCからエンティティーポインターEP1がリリースされる。また、エンティティーポインターEP1に対応するページデータPD1、PD2、PD3とプログラムエンティティーPE1がリリースされる。リリースされたデータが格納された格納領域は無効化され、上書きが可能である格納領域に識別され得る。
【0278】
図46は本発明の実施形態によるメモリコントローラMCの動作方法の第6例を示す順序図である。例示的に、バッファメモリ170に格納されたページデータに対して更新が要請された時のメモリコントローラMCの動作方法が
図48に図示される。
【0279】
図41及び
図46を参照すれば、S610段階で、バッファメモリ170のバッファ領域171に格納されたページデータの更新データが受信される。例示的に、外部装置(例えば、ホスト)からデータと共に受信されるアドレス(例えば、論理アドレス)がバッファメモリ170に格納されたデータのアドレス(例えば、論理アドレス)と重複されれば、外部装置から受信されたデータは更新データに識別され得る。
【0280】
S620段階で、更新データがページデータの部分データであるか否かが判別される。例えば、更新データがバッファメモリ170に格納された1つのページデータの部分データであるか否かを判別され得る。更新データが部分データではなければ、S630段階で、更新データがバッファメモリ170の空いたバッファスロットに格納される。更新データが部分データであれば、S640段階が遂行される。
【0281】
S640段階で、更新データがページデータと組合されて新しいページデータが生成される。新しいページデータはバッファメモリ170の空いたバッファスロットに格納される。例えば、更新データ及びバッファメモリ170に格納された原本データの中で更新データに対応しない残るデータが組合されて新しいページデータを形成することができる。
【0282】
図47は
図46の方法によって更新データがバッファメモリ170に格納される例を示す。
図47を参照すれば、第1ケースは更新データが1つのページデータPDi+3である場合を示す。更新データが1つのページデータPDi+3である場合、更新データはバッファメモリ170の1つのスロットに格納され得る。
【0283】
第2ケースは更新データが1つのページデータの部分データである場合を示す。更新データは新しいページデータPDi+3の第1部分P1を形成することができる。原本ページデータの中で更新データに対応しない部分が複写されて新しいページデータPDi+3の第2部分P2を形成することができる。
【0284】
図48は本発明の第2実施形態によるメモリシステム100aを示すブロック図である。
図48を参照すれば、メモリシステム100aはバス110、第1プロセッサー120、第1メモリ130、第2プロセッサー140、第2メモリ150、バッファマネージャー160、バッファメモリ170、メモリマネージャー180a、及び複数の不揮発性メモリ190a_1〜190a_mを含む。
【0285】
メモリマネージャー180aは複数のチャンネルCH1〜CHmを通じて複数の不揮発性メモリ190a_1〜190a_mと各々通信できる。複数のチャンネルCH1〜CHmは互いに独立的に動作することができる。1つのチャンネルに複数の不揮発性メモリが結合され得る。
【0286】
メモリマネージャー180aは複数のチャンネルCH1〜CHmに各々対応する複数のコマンドキューCQ1〜CQmを包含することができる。複数のコマンドキューCQ1〜CQmは複数のチャンネルCH1〜CHmに各々対応するコマンドを格納することができる。
【0287】
図49は本発明の実施形態によるソリッドステートドライブ(SSD:Solid State Drive)1000を示す。
図49を参照すれば、ソリッドステートドライブ1000はコントローラ1100、複数の不揮発性メモリ1200、及びコネクター1300を含む。
【0288】
メモリコントローラ1100は
図1又は
図48を参照して説明されたメモリコントローラMCを包含することができる。メモリコントローラ1100はプログラムキューPQに基づいて、不揮発性メモリ1200のダイレクトリプログラムを制御することができる。
【0289】
複数の不揮発性メモリ1200はフラッシュメモリ、PRAM(Phase−change RAM)、MRAM(Magnetic RAM)、RRAM(登録商標)(Resistive RAM)、FRAM(登録商標)(Ferroelectric RAM)等を包含することができる。コネクター1300はソリッドステートドライブ1000と外部装置(例えば、ホスト)を電気的に連結することができる。
【0290】
図50は本発明の実施形態によるコンピューティング装置2000を示すブロック図である。
図50を参照すれば、コンピューティング装置2000はプロセッサー2100、メモリ2200、ストレージ2300、モデム2400、及び使用者インターフェイス2500を含む。
【0291】
プロセッサー2100はコンピューティング装置2000の諸般動作を制御し、論理演算を遂行することができる。例えば、プロセッサー2100はシステム−オン−チップ(SoC、System−on−Chip)で構成されることができる。プロセッサー2100は汎用プロセッサー又はアプリケーションプロセッサーを包含することができる。
【0292】
メモリ2200はプロセッサー2100と通信できる。メモリ2200はプロセッサー2100又はコンピューティング装置2000の動作メモリ(又はメーンメモリ)であり得る。メモリ2200はSRAM(Static RAM)、DRAM(Dynamic RAM)、SDRAM(Synchronous DRAM)等のような揮発性メモリ、又はフラッシュメモリ、PRAM(Phase−change RAM)、MRAM(Magnetic RAM)、RRAM(登録商標)(Resistive RAM)、FRAM(登録商標)(Ferroelectric RAM)等のような不揮発性メモリを包含することができる。
【0293】
ストレージ2300はコンピューティング装置2000で長期的に格納しようとするデータを格納することができる。ストレージ2300はハードディスクドライブ(HDD、Hard Disk Drive)又はフラッシュメモリ、PRAM(Phase−change RAM)、MRAM(Magnetic RAM)、RRAM(登録商標)(Resistive RAM)、FRAM(登録商標)(Ferroelectric RAM)等のような不揮発性メモリを包含することができる。
【0294】
ストレージ2300は
図1乃至
図48を参照して説明されたメモリシステム100又は100aを包含することができる。ストレージ2300はプログラムキューPQに基づいて、ダイレクトリプログラムを遂行することができる。ストレージ2300は
図49を参照して説明されたソリッドステートドライブ1000を包含することができる。
【0295】
モデム2400はプロセッサー2100の制御にしたがって外部装置と通信を遂行することができる。例えば、モデム2400は外部装置と有線又は無線通信を遂行することができる。モデム2400はLTE(Long Term Evolution)、WiMax、GSM(登録商標)(Global System for Mobile communication)、CDMA(Code Division Multiple Access)、ブルートゥース(Bluetooth(登録商標))、NFC(Near Field Communication)、WiFi、RFID(Radio Frequency IDentification)等のような多様な無線通信方式、又はUSB(Universal Serial Bus)、SATA(Serial AT Attachment)、SCSI(Small Computer Small Interface)、ファイアーワイヤ(Firewire)、PCI(Peripheral Component Interconnection)等のような多様な有線通信方式の中で少なくとも1つに基づいて、通信を遂行することができる。
【0296】
使用者インターフェイス2500はプロセッサー2100の制御にしたがって使用者と通信できる。例えば、使用者インターフェイス2500はキーボード、キーパッド、ボタン、タッチパネル、タッチスクリーン、タッチパッド、タッチボール、カメラ、マイク、ジャイロスコープセンサー、振動センサー、等のような使用者入力インターフェイスを包含することができる。使用者インターフェイス2500はLCD(Liquid Crystal Display)、OLED(Organic Light Emitting Diode)表示装置、AMOLED(Active Matrix OLED)表示装置、LED、スピーカー、モーター等のような使用者出力インターフェイスを包含することができる。
【0297】
本発明の詳細な説明では具体的な実施形態に関して説明したが、本発明の範囲と技術的思想から逸脱しない限度内で様々な変形が可能である。したがって、本発明の範囲は上述した実施形態に限定されて定まれてはならないし、後述する特許請求の範囲のみでなく、この発明の特許請求の範囲と均等なものによって定まれる。