(57)【要約】【課題】向上された動作性能を有するメモリコントローラ及びメモリコントローラの動作方法が提供する。【解決手段】本発明の動作方法は、受信されたデータ及びプログラムエンティティーをバッファにバッファリングする段階、管理情報を格納する段階、及び受信されたデータをバッファからメモリに伝送する段階で構成される。プログラムエンティティーは第１アドレス情報及び第２アドレス情報を含む。第１アドレス情報は受信されたデータを格納するバッファのアドレスを示す。第２アドレス情報は受信されたデータを格納するメモリのアドレスを示す。管理情報はプログラム情報を含む。プログラム情報はバッファのプログラムエンティティーに対するポインターを含む。【選択図】図５
2014182792.tif 000002
【特許請求の範囲】
【請求項１】
メモリを含むメモリシステムの動作方法において、
メモリコントローラの制御にしたがって、受信されたデータ及び連関されたプログラムエンティティーをバッファにバッファリングする段階と、
前記メモリコントローラに、管理情報を格納する段階と、
前記管理情報及び前記プログラムエンティティーに基づいて、前記受信されたデータを前記バッファから前記メモリに伝送する段階と、を含み、
前記プログラムエンティティーは、第１アドレス情報及び第２アドレス情報を含み、
前記第１アドレス情報は、前記受信されたデータを格納する前記バッファのアドレスを示し、
前記第２アドレス情報は、前記受信されたデータを格納する前記メモリのアドレスを示し、
前記管理情報は、プログラム情報を含み、
前記プログラム情報は、前記バッファの前記プログラムエンティティーに対するポインターを含む動作方法。
【請求項２】
前記伝送する段階は、複数のプログラムステップに掛けて遂行され、各プログラムステップは前記受信されたデータの前記メモリへの格納を精密に遂行する請求項１に記載の動作方法。
【請求項３】
前記受信されたデータは、最下位ビットページデータ及び最上位ビットページデータを含み、
前記受信されたデータは、中間ビットページデータをさらに含む請求項２に記載の動作方法。
【請求項４】
第１論理アドレスと連関された第１ページデータを受信する段階と、
前記第１論理アドレスと連関された第２ページデータを受信する段階と、を含み、
前記第１ページデータは、最下位ビットページデータを示し、
前記第２ページデータは、最上位ビットページデータを示し、
前記バッファリングする段階は、前記第１ページデータ及び前記第２ページデータを前記受信されたデータにバッファリングする請求項２に記載の動作方法。
【請求項５】
前記伝送する段階で、各プログラムステップの間に前記第１アドレス情報を利用して前記受信されたデータがアクセスされる請求項２に記載の動作方法。
【請求項６】
前記格納する段階は、
前記伝送する段階のプログラムステップに基づいて、プログラムキューの複数のステージの中で１つに前記ポインターを格納する段階を含む請求項２に記載の動作方法。
【請求項７】
前記複数のプログラムステップは、第１、第２、及び第３プログラムステップを含み、前記複数のステージは、第１、第２、及び第３プログラムステージを含む請求項６に記載の動作方法。
【請求項８】
前記伝送する段階で、
前記ポインターが前記第１プログラムステージに格納されれば、前記第１プログラムステップが遂行され、
前記ポインターが前記第２プログラムステージに格納されれば、前記第２プログラムステップが遂行され、
前記ポインターが前記第３プログラムステージに格納されれば、前記第３プログラムステップが遂行される請求項７に記載の動作方法。
【請求項９】
前記伝送する段階は、
前記ポインターが前記第１プログラムステージに格納されれば、前記プログラムエンティティーに基づいて、第１プログラムステップと連関された第１コマンドを前記メモリコントローラのメモリマネージャーに格納する段階と、
前記ポインターが前記第２プログラムステージに格納されれば、前記プログラムエンティティーに基づいて、第２プログラムステップと連関された第２コマンドを前記メモリコントローラのメモリマネージャーに格納する段階と、
前記ポインターが前記第３プログラムステージに格納されれば、前記プログラムエンティティーに基づいて、第３プログラムステップと連関された第３コマンドを前記メモリコントローラのメモリマネージャーに格納する段階と、を含む請求項８に記載の動作方法。
【請求項１０】
前記第１、第２、及び第３プログラムステージの各々は、ポインターを格納する１つ以上のポインターエントリスロットを含む請求項７に記載の動作方法。
【請求項１１】
前記複数のプログラムステージは、少なくとも１つの追加プログラムステージを含む請求項７に記載の動作方法。
【請求項１２】
前記格納する段階は、
前記第１プログラムステップの以後に、前記ポインターを前記第１プログラムステージから前記第２プログラムステージに移動する段階と、
前記第２プログラムステップの以後に、前記ポインターを前記第２プログラムステージから前記第３プログラムステージに移動する段階と、
前記第３プログラムステップの以後に、前記ポインターを前記第３プログラムステージから前記追加プログラムステージに移動する段階と、を含む請求項１１に記載の動作方法。
【請求項１３】
前記ポインターが前記追加プログラムステージに格納された後に要求条件が充足されれば、前記ポインターを前記プログラムキューからリリースする段階をさらに含む請求項１２に記載の動作方法。
【請求項１４】
前記要求条件は、臨界個数のポインターが前記追加プログラムステージに格納されることである請求項１３に記載の動作方法。
【請求項１５】
前記ポインターが追加プログラムステージに格納された後、前記ポインターを前記プログラムキューからリリースする段階をさらに含む請求項１１に記載の動作方法。
【請求項１６】
前記ポインターがリリースされる時まで、読出し要請に応答して前記バッファから前記受信されたデータを読み出す段階をさらに含む請求項１５に記載の動作方法。
【請求項１７】
前記ポインターがリリースされた後に、読出し要請に応答して前記メモリから前記受信されたデータを読み出す段階をさらに含む請求項１６に記載の動作方法。
【請求項１８】
前記プログラムキューをプログラムキュープールから割当する段階をさらに含む請求項６に記載の動作方法。
【請求項１９】
第１、第２、及び第３プログラムステップは、前記受信されたデータを前記メモリにプログラムし、
前記第１プログラムステップは、前記第３プログラムステップよりさらに少ない数の閾値電圧状態と連関される請求項２に記載の動作方法。
【請求項２０】
第１プログラムステップは、１−ステッププログラムであり、
第２プログラムステップは、粗いプログラムであり、
第３プログラムステップは、精巧なプログラムである請求項２に記載の動作方法。
【請求項２１】
前記格納する段階は、
前記複数のステージの間で前記複数のポインターの移動を管理する段階を含む請求項２０に記載の動作方法。
【請求項２２】
前記伝送する段階で、前記複数の受信されたデータが前記バッファから前記メモリに伝送プロトコルにしたがう順序に伝送され、
前記伝送プロトコルは、前記複数のステージの中でいずれかステージに前記複数のポインターが格納されるか否かに基づいて、前記順序を判別する請求項２１に記載の動作方法。
【請求項２３】
前記バッファリングする段階、前記格納する段階、及び前記伝送する段階は、前記メモリコントローラで実行されるステートマシンに基づいて、遂行される請求項１に記載の動作方法。
【請求項２４】
前記バッファリングする段階で、前記受信されたデータ及び前記連関されたプログラムエンティティーは、ダイナミックランダムアクセスメモリにバッファリングされ、
前記格納する段階で、前記管理情報は、スタティックランダムアクセスメモリに格納され、
前記伝送する段階で、前記受信されたデータは、前記ダイナミックランダムアクセスメモリから不揮発性メモリに伝送される請求項１に記載の動作方法。
【請求項２５】
前記管理情報は、前記受信されたデータと連関されて外部装置から受信されたコマンド、前記受信されたデータと連関されて前記外部装置から受信されたアドレス、前記バッファ内の前記受信されたデータの論理アドレス、及び前記バッファ内の前記受信されたデータの物理アドレスを含む請求項１に記載の動作方法。
【請求項２６】
前記バッファリングする段階は、
新しいデータと連関されて外部装置から受信された論理アドレスが、前記受信されたデータと連関された論理アドレスにマッチされたか否かを判別する段階と、
マッチされることと判別されれば、アップデートプロセスを遂行する段階を含み、
前記アップデートプロセスは、
前記新しいデータが有効であり、前記受信されたデータと同一であるサイズであるかを判別する段階と、
前記新しいデータが有効であり、同一のサイズであれば、前記新しいデータを新しい受信されたデータに前記バッファにバッファリングする段階と、
前記新しいデータが有効でなく、前記受信されたデータと同一であるサイズではなければ、前記新しいデータを前記受信されたデータの一部と組合して組合されたデータを生成し、そして前記組合されたデータを新しい受信されたデータに前記バッファにバッファリングする段階と、を含む請求項１に記載の動作方法。
【請求項２７】
前記バッファリングする段階は、前記プログラムエンティティーを生成する段階を含む請求項１に記載の動作方法。
【請求項２８】
前記生成する段階で、前記プログラムエンティティーは、前記受信されたデータがバッファリングされた後に生成される請求項２７に記載の動作方法。
【請求項２９】
前記生成する段階で、前記プログラムエンティティーは、外部装置から受信されるコマンド及びアドレスに基づいて、生成される請求項２７に記載の動作方法。
【請求項３０】
不揮発性メモリを含むメモリシステムの動作方法において、
ページデータのセットをバッファで受信する段階と、
前記バッファで、メモリコントローラから前記ページデータのセットと連関されたプログラムエンティティーを受信する段階と、
前記不揮発性メモリで複数のプログラムステップを遂行して、前記ページデータのセットを前記不揮発性メモリに格納する段階と、を含み、
前記プログラムエンティティーは、第１アドレス情報及び第２アドレス情報を含み、
前記第１アドレス情報は、前記受信されたデータを格納する前記バッファのアドレスを示し、
前記第２アドレス情報は、前記受信されたデータを格納する前記不揮発性メモリのアドレスを示す動作方法。
【請求項３１】
前記不揮発性メモリのメモリマネージャーでコマンドを受信する段階をさらに含み、
前記コマンドは、前記プログラムステップの中で１つと前記第２アドレス情報とを示し、
前記ページデータのセットを前記不揮発性メモリに格納する段階で、前記コマンドに基づいて、前記複数のプログラムステップの中で１つが遂行される請求項３０に記載の動作方法。
【請求項３２】
プロセッサーによって、前記プログラムエンティティーを読み出す段階と、
前記プロセッサーによって、前記コマンドを前記メモリマネージャーに伝送する段階と、をさらに含む請求項３１に記載の動作方法。
【請求項３３】
プロセッサーによって、前記プログラムエンティティーを読み出す前にローカルメモリから管理情報を読み出す段階をさらに含み、
前記メモリコントローラは、前記ローカルメモリを含む請求項３２に記載の動作方法。
【請求項３４】
前記管理情報は、前記バッファで前記プログラムエンティティーの位置を示す請求項３３に記載の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置に関し、より詳細にはメモリコントローラ及びメモリコントローラの動作方法に関する。
【背景技術】
【０００２】
半導体メモリ（ｓｅｍｉｃｏｎｄｕｃｔｏｒ  ｍｅｍｏｒｙ）はシリコン（Ｓｉ、ｓｉｌｉｃｏｎ）、ゲルマニウム（Ｇｅ、Ｇｅｒｍａｎｉｕｍ）、砒素ガリウム（ＧａＡｓ、ｇａｌｌｉｕｍ  ａｒｓｅｎｉｄｅ）、リン化インジウム（ＩｎＰ、ｉｎｄｉｕｍ  ｐｈｏｓｐｉｄｅ）等のような半導体を利用して具現される記憶装置である。半導体メモリは大きく揮発性メモリ（Ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）と不揮発性メモリ（Ｎｏｎｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ）とに区分される。
【０００３】
揮発性メモリは電源供給が遮断されれば、格納していたデータを失うメモリ装置である。揮発性メモリはＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）等を含む。不揮発性メモリは電源供給が遮断されても格納したデータを維持するメモリ装置である。不揮発性メモリにはＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ、ＰＲＡＭ（Ｐｈａｓｅ−ｃｈａｎｇｅ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）、ＲＲＡＭ（登録商標）（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、ＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）等がある。
【０００４】
半導体メモリは半導体メモリを制御するように構成されるメモリコントローラと共に使用される。メモリコントローラは半導体メモリの読出し、プログラム、消去、又は背景動作を制御するように構成される。半導体メモリの動作性能を向上させるために、メモリコントローラは半導体メモリを制御する多様な動作方法を具備する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第８，３９１，０６２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明の目的は向上された動作性能を有するメモリコントローラ及びメモリコントローラの動作方法を提供することにある。
【課題を解決するための手段】
【０００７】
本発明の実施形態によるメモリを含むメモリシステムの動作方法は、メモリコントローラの制御にしたがって、受信されたデータ及び連関されたプログラムエンティティーをバッファにバッファリングする段階と、前記メモリコントローラに、管理情報を格納する段階と、前記管理情報及び前記プログラムエンティティーに基づいて、前記受信されたデータを前記バッファから前記メモリに伝送する段階と、を含み、前記プログラムエンティティーは、第１アドレス情報及び第２アドレス情報を含み、前記第１アドレス情報は、前記受信されたデータを格納する前記バッファのアドレスを示し、前記第２アドレス情報は、前記受信されたデータを格納する前記メモリのアドレスを示し、前記管理情報は、プログラム情報を含み、前記プログラム情報は、前記バッファの前記プログラムエンティティーに対するポインターを含む。
【０００８】
実施形態として、前記伝送する段階は、複数のプログラムステップに掛けて遂行され、各プログラムステップは前記受信されたデータの前記メモリへの格納を精密に遂行する。
【０００９】
実施形態として、前記受信されたデータは、最下位ビットページデータ及び最上位ビットページデータを含む。
【００１０】
実施形態として、前記受信されたデータは、中間ビットページデータをさらに含む。
【００１１】
実施形態として、第１論理アドレスと連関された第１ページデータを受信する段階と、前記第１論理アドレスと連関された第２ページデータを受信する段階と、を含み、前記第１ページデータは、最下位ビットページデータを示し、前記第２ページデータは、最上位ビットページデータを示し、前記バッファリングする段階は、前記第１ページデータ及び前記第２ページデータを前記受信されたデータにバッファリングする。
【００１２】
実施形態として、前記伝送する段階で、各プログラムステップの間に前記第１アドレス情報を利用して前記受信されたデータがアクセスされる。
【００１３】
実施形態として、前記格納する段階は、前記伝送する段階のプログラムステップに基づいて、プログラムキューの複数のステージの中で１つに前記ポインターを格納する段階を含む。
【００１４】
実施形態として、前記複数のプログラムステップは、第１、第２、及び第３プログラムステップを含み、前記複数のステージは第１、第２、及び第３プログラムステージを含む。
【００１５】
実施形態として、前記伝送する段階で、前記ポインターが前記第１プログラムステージに格納されれば、前記第１プログラムステップが遂行され、前記ポインターが前記第２プログラムステージに格納されれば、前記第２プログラムステップが遂行され、前記ポインターが前記第３プログラムステージに格納されれば、前記第３プログラムステップが遂行される。
【００１６】
実施形態として、前記伝送する段階は、前記ポインターが前記第１プログラムステージに格納されれば、前記プログラムエンティティーに基づいて、第１プログラムステップと連関された第１コマンドを前記メモリコントローラのメモリマネージャーに格納する段階と、前記ポインターが前記第２プログラムステージに格納されれば、前記プログラムエンティティーに基づいて、第２プログラムステップと連関された第２コマンドを前記メモリコントローラのメモリマネージャーに格納する段階と、前記ポインターが前記第３プログラムステージに格納されれば、前記プログラムエンティティーに基づいて、第３プログラムステップと連関された第３コマンドを前記メモリコントローラのメモリマネージャーに格納する段階と、を含む。
【００１７】
実施形態として、前記伝送する段階は、前記メモリマネージャーによって、前記第１、第２、及び第３コマンドに各々応答して、前記第１、第２、及び第３プログラムステップを遂行する段階をさらに含む。
【００１８】
実施形態として、要求条件が充足されれば、ロールバック動作をトリガする段階をさらに含み、前記ロールバック動作は、前記第１、第２、及び第３コマンドが前記メモリマネージャーに格納され、前記格納されたコマンドが完了されない場合に前記ポインターに対して遂行され、前記ロールバック動作は、前記ポインターを前記複数のステージの中で現在のステージから前記複数のステージの中で以前ステージに移動することを含む。
【００１９】
実施形態として、前記第１、第２、及び第３プログラムステージの各々は、ポインターを格納する１つ以上のポインターエントリスロットを含む。
【００２０】
実施形態として、前記複数のプログラムステージは少なくとも１つの追加プログラムステージを含む。
【００２１】
実施形態として、前記格納する段階は、前記第１プログラムステップの以後に、前記ポインターを前記第１プログラムステージから前記第２プログラムステージに移動する段階と、前記第２プログラムステップの以後に、前記ポインターを前記第２プログラムステージから前記第３プログラムステージに移動する段階と、前記第３プログラムステップの以後に、前記ポインターを前記第３プログラムステージから前記追加プログラムステージに移動する段階と、を含む。
【００２２】
実施形態として、前記ポインターが前記追加プログラムステージに格納された後に要求条件が充足されれば、前記ポインターを前記プログラムキューからリリースする段階をさらに含む。
【００２３】
実施形態として、前記要求条件は、臨界個数のポインターが前記追加プログラムステージに格納される。
【００２４】
実施形態として、前記ポインターが前記追加プログラムステージに格納された後、前記ポインターを前記プログラムキューからリリースする段階をさらに含む。
【００２５】
実施形態として、前記ポインターがリリースされる時まで、読出し要請に応答して前記バッファから前記受信されたデータを読み出す段階をさらに含む。
【００２６】
実施形態として、前記ポインターがリリースされた後に、読出し要請に応答して前記メモリから前記受信されたデータを読み出す段階をさらに含む。
【００２７】
実施形態として、要求条件が充足されれば、ロールバック動作を遂行する段階をさらに含み、前記ロールバック動作は、前記ポインターを前記複数のステージの中で現在ステージから前記複数のステージの中で以前ステージに移動する段階を含む。
【００２８】
実施形態として、前記プログラムキューをプログラムキュープールから割当する段階をさらに含む。
【００２９】
実施形態として、前記第１、第２、及び第３プログラムステップは、前記受信されたデータを前記メモリにプログラムし、前記第１プログラムステップは、前記第３プログラムステップよりさらに少ない数の閾値電圧状態と連関される。
【００３０】
実施形態として、前記第１プログラムステップは、１−ステッププログラムであり、前記第２プログラムステップは、粗いプログラムであり、前記第３プログラムステップは精巧なプログラムである。
【００３１】
実施形態として、前記バッファリングする段階で、少なくとも第１及び第２受信されたデータ、及び対応する第１及び第２プログラムエンティティーが前記バッファにバッファリングされ、前記格納する段階で、前記第１及び第２プログラムエンティティーに対する第１及び第２ポインターが各々格納され、前記伝送する段階で、前記第１受信されたデータを伝送するための第２プログラムステップが遂行される前に、前記第２受信されたデータを伝送するための第１プログラムステップが遂行される。
【００３２】
実施形態として、前記バッファリングする段階で複数の受信されたデータがバッファリングされ、前記バッファリングする段階で、複数の受信されたデータがバッファリングされ、前記格納する段階で、プログラムキューの複数のステージの中で１つの複数のポインターが格納され、前記複数のポインターの各々は、前記複数の受信されたデータの各々と連関され、前記複数のステージは、前記複数のプログラムステップの各々と連関されたステージを含み、前記伝送する段階で、前記複数のステージの中でいずれかに連関されたポインターを格納するか否かに基づいて、前記複数の受信されたデータに対する前記複数のプログラムステップの中で対応するステップが遂行される。
【００３３】
実施形態として、前記格納する段階は、前記複数のステージの間で前記複数のポインターの移動を管理する段階を含む。
【００３４】
実施形態として、前記伝送する段階で、前記複数の受信されたデータが前記バッファから前記メモリに伝送プロトコルにしたがう順序に伝送され、前記伝送プロトコルは、前記複数のステージの中でいずれかステージに前記複数のポインターが格納されるか否かに基づいて、前記順序を判別する。
【００３５】
実施形態として、前記バッファリングする段階、前記格納する段階、及び前記伝送する段階は前記メモリコントローラで実行されるステートマシンに基づいて、遂行される。
実施形態として、前記バッファリングする段階で、前記受信されたデータ及び前記連関されたプログラムエンティティーは、ダイナミックランダムアクセスメモリにバッファリングされ、前記格納する段階で、前記管理情報は、スタティックランダムアクセスメモリに格納され、前記伝送する段階で、前記受信されたデータは、前記ダイナミックランダムアクセスメモリから不揮発性メモリに伝送される。
【００３６】
実施形態として、前記受信されたデータと連関されて外部装置から受信されたコマンド、前記受信されたデータと連関されて前記外部装置から受信されたアドレス、前記バッファ内の前記受信されたデータの論理アドレス、及び前記バッファ内の前記受信されたデータの物理アドレスを含む。
【００３７】
実施形態として、前記バッファリングする段階は、新しいデータと連関されて外部装置から受信された論理アドレスが、前記受信されたデータと連関された論理アドレスにマッチされたか否かを判別する段階と、マッチされることと判別されれば、アップデートプロセスを遂行する段階を含み、前記アップデートプロセスは、前記新しいデータが有効であり、前記受信されたデータと同一であるサイズであるかを判別する段階と、前記新しいデータが有効であり、同一のサイズであれば、前記新しいデータを新しい受信されたデータに前記バッファにバッファリングする段階と、前記新しいデータが有効でなく、前記受信されたデータと同一であるサイズではなければ、前記新しいデータを前記受信されたデータの一部と組合して組合されたデータを生成し、そして前記組合されたデータを新しい受信されたデータに前記バッファにバッファリングする段階と、を含む。
【００３８】
実施形態として、前記バッファリングする段階は、前記プログラムエンティティーを生成する段階を含む。
【００３９】
実施形態として、前記生成する段階で、前記プログラムエンティティーは、前記受信されたデータがバッファリングされた後に生成される。
【００４０】
実施形態として、前記生成する段階で、前記プログラムエンティティーは、外部装置から受信されるコマンド及びアドレスに基づいて、生成される。
【００４１】
本発明の実施形態による不揮発性メモリを含むメモリシステムの動作方法は、ページデータのセットをバッファで受信する段階と、前記バッファで、メモリコントローラから前記ページデータのセットと連関されたプログラムエンティティーを受信する段階と、前記不揮発性メモリで複数のプログラムステップを遂行して、前記ページデータのセットを前記不揮発性メモリに格納する段階と、を含み、前記プログラムエンティティーは、第１アドレス情報及び第２アドレス情報を含み、前記第１アドレス情報は、前記受信されたデータを格納する前記バッファのアドレスを示し、前記第２アドレス情報は、前記受信されたデータを格納する前記不揮発性メモリのアドレスを示す。
【００４２】
実施形態として、前記不揮発性メモリのメモリマネージャーでコマンドを受信する段階をさらに含み、前記コマンドは、前記プログラムステップの中で１つと前記第２アドレス情報とを示し、前記ページデータのセットを前記不揮発性メモリに格納する段階で、前記コマンドに基づいて、前記複数のプログラムステップの中で１つが遂行される。
【００４３】
実施形態として、プロセッサーによって、前記プログラムエンティティーを読み出す段階と、前記プロセッサーによって、前記コマンドを前記メモリマネージャーに伝送する段階と、をさらに含む。
【００４４】
実施形態として、前記プロセッサーによって、前記プログラムエンティティーを読み出す前にローカルメモリから管理情報を読み出す段階をさらに含み、前記メモリコントローラは、前記ローカルメモリを含む。
【００４５】
実施形態として、前記管理情報は、前記バッファで前記プログラムエンティティー位置を示す。
【００４６】
本発明の実施形態によるメモリシステムは、不揮発性メモリと、ページデータの複数のセットを格納し、複数のプログラムエンティティーを格納するバッファと、前記複数のプログラムエンティティーの中で少なくとも２つの互に異なるプログラムエンティティーが順次的にアクセスされるように制御するメモリコントローラのプロセッサーと、前記ページデータの複数のセットの中でページデータをコマンドに基づいて、前記不揮発性メモリに格納するメモリマネージャーと、を含み、前記複数のプログラムエンティティーの各々は、前記ページデータの複数のセットの互に異なるセットと連関され、前記プロセッサーは、前記アクセスされたプログラムエンティティーに基づいて、前記メモリコントローラの前記メモリマネージャーに前記コマンドを伝送する。
【００４７】
本発明の実施形態によるメモリシステムは、不揮発性メモリと、ページデータの複数のセットを格納し、複数のプログラムエンティティーを格納するバッファと、ローカルメモリから管理情報を読み出すメモリコントローラのプロセッサーと、前記ページデータの複数のセットの中でページデータをコマンドに基づいて、前記不揮発性メモリに格納するメモリマネージャーと、を含み、前記複数のプログラムエンティティーの各々は、前記ページデータの複数のセットの互に異なるセットと連関され、前記メモリコントローラは、前記ローカルメモリを含み、前記プロセッサーは、前記プログラムエンティティーからプログラム情報をアクセスし、前記管理情報に基づいて、前記コマンドを前記メモリコントローラのメモリマネージャーに伝送し、前記プロセッサーは、前記複数のプログラムエンティティーの中で少なくとも２つの互に異なるプログラムエンティティーが順次的にアクセスされるように制御する。
【００４８】
本発明の実施形態によるメモリシステムは、不揮発性メモリと、ページデータの複数のセットを格納し、複数のプログラムエンティティーを格納するバッファと、ローカルメモリから管理情報を読み出すメモリコントローラのプロセッサーと、前記ページデータの複数のセットの中でページデータをコマンドに基づいて、前記不揮発性メモリに格納するメモリマネージャーと、を含み、前記複数のプログラムエンティティーの各々は、前記ページデータの複数のセットの互に異なるセットと連関され、前記メモリコントローラは、前記ローカルメモリを含み、前記プロセッサーは、前記プログラムエンティティーからプログラム情報をアクセスし、前記管理情報に基づいて、前記コマンドを前記メモリコントローラのメモリマネージャーに伝送し、前記メモリマネージャーは、前記ページデータの複数のセットの中でページデータを前記コマンドに基づいて、前記不揮発性メモリに格納し、前記プロセッサーは、前記メモリマネージャーがページデータのセットを複数のプログラムステップにプログラムし、そして少なくとも２つの順次的に遂行されたプログラムステップがページデータの互に異なるセットと連関されるように制御する。
【００４９】
本発明の実施形態によるメモリシステムは、管理情報を格納するメモリコントローラのローカルメモリと、データ領域及びプログラム情報領域に分割されるバッファメモリと、前記ローカルメモリ及び前記バッファメモリをアクセスする前記メモリコントローラのプロセッサーと、を含み、前記データ領域は、ページデータのセットを格納し、前記プログラム情報領域は、前記ページデータのセットの各々のプログラム情報を格納し、前記ページデータのセットの各々に対するプログラム情報は、前記ページデータのセットの各々を格納するための不揮発性メモリのアドレスを示す。
【００５０】
本発明の実施形態によるメモリコントローラは、前記メモリコントローラは、受信されたデータ及び連関されたプログラムエンティティーをバッファに格納し、前記プログラムエンティティーは、第１アドレス情報及び第２アドレス情報を含み、前記第１アドレス情報は、前記受信されたデータを格納する前記バッファのアドレスを示し、前記第２アドレス情報は、前記受信されたデータを格納する不揮発性メモリのアドレスを示し、前記メモリコントローラは、前記メモリコントローラのローカルメモリに管理情報を格納し、前記管理情報は、プログラム情報を含み、前記プログラム情報は、前記バッファの前記プログラムエンティティーに対するポインターを含み、前記メモリコントローラは、前記管理情報及び前記プログラムエンティティーに基づいて、前記受信されたデータを前記バッファから前記不揮発性メモリに伝送する。
【発明の効果】
【００５１】
本発明の実施形態によれば、バッファメモリ及びバッファメモリに格納されたデータを管理するプログラムキューに基づいて、不揮発性メモリのプログラムが管理される。不揮発性メモリ対するプログラムを以前状態に復元することはバッファメモリに格納されたデータを変更しなく、プログラムキューを調節することで遂行される。したがって、向上された動作性能を有するメモリコントローラ及びメモリコントローラの動作方法が提供される。
【図面の簡単な説明】
【００５２】
【図１】本発明の実施形態によるメモリシステムを示すブロック図である
【図２】本発明の実施形態によるメモリコントローラの動作方法の第１例を示す順序図である。
【図３】プログラムキューの例を示す図である。
【図４】第２プロセッサーのステートマシンが動作する方法を示す状態図である。
【図５】本発明の実施形態によるメモリコントローラの動作方法の第２例を示す順序図である。
【図６】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図７】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図８】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図９】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図１０】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図１１】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図１２】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図１３】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図１４】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図１５】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図１６】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図１７】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す。
【図１８】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図１９】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２０】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２１】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２２】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２３】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２４】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２５】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２６】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２７】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２８】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図２９】図５に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図３０】本発明の実施形態によるメモリコントローラの動作方法の第３例を示す順序図である。
【図３１】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図３２】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図３３】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図３４】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図３５】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図３６】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図３７】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図３８】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図３９】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図４０】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図４１】図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す図である。
【図４２】不揮発性メモリで１−ステッププログラム、粗いプログラム、及び精巧なプログラムが遂行される時、メモリセルの閾値電圧の変化を示すグラフである。
【図４３】本発明の実施形態によるメモリコントローラの動作方法の第４例を示す順序図である。
【図４４】本発明の実施形態によるメモリコントローラの動作方法の第５例を示す順序図である。
【図４５】図４１の状態からエンティティーポインターがリリースされた例を示す図である。
【図４６】本発明の実施形態によるメモリコントローラの動作方法の第６例を示す順序図である。
【図４７】図４６の方法によって更新データがバッファメモリに格納される例を示す図である。
【図４８】本発明の第２実施形態によるメモリシステムを示すブロック図である。
【図４９】本発明の実施形態によるソリッドステートドライブを示す図である。
【図５０】本発明の実施形態によるコンピューティング装置を示すブロック図である。
【発明を実施するための形態】
【００５３】
以下で、本発明が属する技術分野で通常の知識を有する者が本発明の技術的思想を容易に実施できるよう詳細に説明するために、本発明の実施形態を添付の図面を参照して説明する。
【００５４】
図１は本発明の実施形態によるメモリシステム１００を示すブロック図である。図１を参照すれば、メモリシステム１００はバス１１０、第１プロセッサー１２０、ホストインターフェイス１２５、第１メモリ１３０、第２プロセッサー１４０、第２メモリ１５０、バッファマネージャー１６０、バッファメモリ１７０、メモリマネージャー１８０、及び不揮発性メモリ１９０を含む。
【００５５】
第１及び第２プロセッサー１２０、１４０を参照して本発明の実施形態が説明される。しかし、本発明の技術的思想は１つのプロセッサー又は２以上のプロセッサーにも適用され得る。また、本発明の技術的思想は第１及び第２メモリ１３０、１５０の代わりに単一メモリにも適用され得る。
【００５６】
バス１１０はメモリシステム１００の構成要素の間にチャンネルを提供することができる。バス１１０はＡＭＢＡ、ＡＨＢ等のような多様な標準の中で少なくとも１つに基づいて、動作することができる。
【００５７】
第１プロセッサー１２０は外部装置（例えば、ホスト）との通信を処理することができる。例えば、第１プロセッサー１２０はホストインターフェイス１２５を通じて外部装置から受信されるコマンド、アドレス、又はデータを処理することができる。第１プロセッサー１２０はホストインターフェイス１２５を通じて外部装置から受信されるコマンド又はアドレスを第２プロセッサー１４０に伝送することができる。第１プロセッサー１２０はホストインターフェイス１２５を通じて外部装置から受信されるデータをバッファマネージャー１６０を通じてバッファメモリ１７０に格納することができる。
【００５８】
例えば、ホストインターフェイス１２５を通じてデータが受信される時、第１プロセッサー１２０はバッファメモリ１７０にデータが格納される領域を割当することができる。ホストインターフェイス１２５を通じて受信されるデータはバッファマネージャー１６０を通じてバッファメモリ１７０の割当された格納領域に格納され得る。例えば、ホストインターフェイス１２５を通じてコマンド又はアドレスが受信される時、第１プロセッサー１２０はホストインターフェイス１２５からアドレス又はコマンドを受信できる。第１プロセッサー１２０は受信されるアドレス又はコマンドを第１メモリ１３０に格納することができる。ホストインターフェイス１２０はホストインターフェイス１２５を通じて受信されるデータがバッファメモリ１７０に格納された後、外部装置にプログラムが完了されたことを知らせる信号を伝送することができる。ホストインターフェイス１２０はホストインターフェイス１２５を通じて受信されるデータがバッファメモリ１７０に格納された後、第１メモリ１３０に格納されたアドレス又はコマンドを第２メモリ１４０に伝達することができる。ホストインターフェイス１２５は第１メモリ１３０に格納されたアドレス又はコマンドを第２プロセッサー１４０で使用されるデータ構造に変換し、変換されたアドレス又はコマンドを第２プロセッサー１４０に伝達することができる。
【００５９】
ホストインターフェイス１２５は第１プロセッサー１２０の制御にしたがって外部装置と通信を遂行することができる。ホストインターフェイス１２５は外部装置から受信されるデータをバッファマネージャー１６０を通じてバッファメモリ１７０に格納することができる。ホストインターフェイス１２５は外部装置から受信されるコマンド又はアドレスを第１プロセッサー１２０に伝達することができる。
【００６０】
第１メモリ１３０は第１プロセッサー１２０の動作メモリであり得る。第１メモリ１３０はＳＲＡＭを包含することができる。第１メモリ１３０は第１プロセッサー１２０と１つの半導体チップに集積され得る。第１メモリ１３０は１つの半導体チップで第１プロセッサー１２０と同一なハードウェアブロックに集積され得る。第１メモリ１３０は第１プロセッサー１２０と共に集積される埋め込み型ＳＲＡＭ（ｅｍｂｅｄｄｅｄ  ＳＲＡＭ）であり得る。
【００６１】
第２プロセッサー１４０は第１プロセッサー１４０から受信されるコマンド又はアドレスに基づいて、動作することができる。受信されたコマンド又はアドレスに基づいて、第２プロセッサー１４０はメモリマネージャー１８０を通じて不揮発性メモリ１９０の読出し、プログラム、消去、又は背景動作を制御することができる。例えば、不揮発性メモリ１９０はフラッシュメモリであり、第２プロセッサー１４０はフラッシュメモリの動作を制御するように構成されることができる。
【００６２】
第２プロセッサー１４０はステートマシン１４１を含む。ステートマシン１４１は第２プロセッサー１４０内に具現されるハードウェア又は第２プロセッサー１４０によって駆動されるソフトウェアであり得る。ステートマシン１４１は不揮発性メモリ１９０に対するプログラム動作を制御することができる。例示的に、ステートマシン１４１は第２メモリ１５０で管理されるプログラムキューに基づいて、不揮発性メモリ１９０のプログラムを制御することができる。
【００６３】
第１及び第２プロセッサー１２０、１４０は互いに分離されたハードウェアであり得る。例えば、第１及び第２プロセッサー１２０、１４０は１つの半導体チップに集積され、１つの半導体チップ内で互いに分離されたハードウェアブロックを形成することができる。第１及び第２プロセッサー１２０、１４０は互いに分離された半導体チップであり得る。
【００６４】
第２プロセッサー１４０は少なくとも２以上のプロセッサーを包含することができる。第２プロセッサー１４０が少なくとも２以上のプロセッサーで構成される時、第２メモリ１５０は少なくとも２以上のプロセッサーに各々対応する少なくとも２以上のメモリを包含することができる。
【００６５】
第２メモリ１５０は第２プロセッサー１４０の動作メモリであり得る。第２メモリ１５０はＳＲＡＭを包含することができる。第２メモリ１５０はメッセージキュー１５１、プログラムキュープール１５３、及びエンティティーポインタープール１５５の情報を格納することができる。
【００６６】
メッセージキュー１５１は第２メモリ１５０の特定な格納領域に割当され得る。メッセージキュー１５１は第１プロセッサー１２０から伝送されるメッセージ（例えば、コマンド又はアドレス）を格納するように構成される。第２プロセッサー１４０はメッセージキュー１５１に格納されたメッセージ（例えば、コマンド又はアドレス）に基づいて、第２メモリ１５０で駆動されるプログラムキュー及びバッファメモリ１７０に格納されたデータを管理し、不揮発性メモリ１９０のプログラムを制御することができる。
【００６７】
プログラムキュープール１５３は第２メモリ１５０の特定な格納領域に割当され得る。プログラムキュープール１５３はプログラムキューを割当するために準備された格納領域であり得る。第２プロセッサー１４０はメッセージキュー１５１に格納されたメッセージ（例えば、コマンド又はアドレス）に基づいて、プログラムキュープール１５３からプログラムキューを割当するか、プログラムキューを更新するか、或いはプログラムキューをリリースすることができる。第２プロセッサー１４０はプログラムキューに基づいて、不揮発性メモリ１９０のプログラムを制御することができる。
【００６８】
エンティティーポインタープール１５５は第２メモリ１５０の特定な格納領域に割当され得る。エンティティーポインタープール１５５はエンティティーポインターを割当するために準備された格納領域であり得る。エンティティーポインターはバッファメモリ１７０のエンティティー領域１７３に格納されたプログラムエンティティーに対する情報（例えば、アドレス、状態情報等）を包含することができる。第２プロセッサー１４０はメッセージキュー１５１に格納されたメッセージに基づいて、エンティティーポインタープール１５５からエンティティーポインターを割当することができる。割当されたエンティティーポインターはプログラムキューに格納され得る。第２プロセッサー１４０はメッセージキュー１５１に格納されたメッセージに基づいて、エンティティーポインターを管理するか、或いはリリースすることができる。
【００６９】
バッファマネージャー１６０は第１プロセッサー１２０又は第２プロセッサー１４０の制御にしたがってバッファメモリ１７０を制御するように構成される。バッファマネージャー１６０はバッファメモリ１７０の読出し又はプログラムを制御することができる。
【００７０】
バッファメモリ１７０はバッファマネージャー１６０の制御にしたがって動作する。バッファメモリ１７０は第２プロセッサー１４０が不揮発性メモリ１９０の読出し、プログラム又は消去を制御するためのバッファメモリであり得る。バッファメモリ１７０はＤＲＡＭを包含することができる。バッファメモリ１７０はバッファ領域１７１及びエンティティー領域１７３を含む。
【００７１】
バッファ領域１７１は外部装置（例えば、ホスト）からホストインターフェイス１２５を通じて受信されるデータを格納することができる。バッファ領域１７１は第１プロセッサー１２０及びバッファマネージャー１６０の制御にしたがってデータを格納することができる。
【００７２】
エンティティー領域１７３はプログラムエンティティーを格納することができる。プログラムエンティティーはバッファ領域１７１に格納されたデータに対する情報（例えば、アドレス）及びバッファ領域１７１に格納されたデータがプログラムされる不揮発性メモリ１９０の情報（例えば、アドレス）を包含することができる。エンティティー領域１７３は第２プロセッサー１４０及びバッファマネージャー１４０の制御にしたがってプログラムエンティティーを格納することができる。
【００７３】
メモリマネージャー１８０は第２プロセッサー１４０の制御にしたがって不揮発性メモリ１９０を制御するように構成される。メモリマネージャー１８０は不揮発性メモリ１９０の読出し、プログラム、書込み、又は背景動作を制御することができる。
【００７４】
メモリマネージャー１８０はコマンドキュー１８１を含む。コマンドキュー１８１は第２プロセッサー１４０の制御によってバッファメモリ１７０から伝送されるコマンド（例えば、プログラムと連関された情報）を格納するように構成される。メモリマネージャー１８０はコマンドキュー１８１に格納されたコマンド（例えば、プログラムと連関された情報）に基づいて、不揮発性メモリ１９０の読出し、プログラム、消去、又は背景動作を制御することができる。
【００７５】
不揮発性メモリ１９０はメモリマネージャー１８０の制御にしたがって動作する。不揮発性メモリ１９０は複数のメモリブロック１９１〜１９ｎを含む。複数のメモリブロック１９１〜１９ｎの各々は複数のメモリセル（図示せず）を含む。各メモリブロックのメモリセルはワードライン（図示せず）及びビットライン（図示せず）に連結され得る。例えば、各メモリブロックのメモリセルの行はワードラインに各々連結され得る。メモリブロック１９１〜１９ｎのメモリセルの列はビットラインに各々連結され得る。
【００７６】
メモリセルの各々は２以上のビットを格納することができる。各メモリセルが２つのビットを格納する場合、各メモリセルが格納するビットは最下位ビット及び最上位ビットであり得る。各メモリセルが３つのビットを格納する場合、各メモリセルが格納するビットは最下位ビット、中間ビット、及び最上位ビットであり得る。各メモリセルが４つのビットを格納する場合、各メモリセルが格納するビットは最下位ビット、第１中間ビット、第２中間ビット、及び最上位ビットであり得る。各メモリセルが格納するビットの数は限定されない。以下で、本発明の技術的思想を簡潔であり、明確に説明するために、各メモリセルは最下位ビット、中間ビット、及び最上位ビットを格納することと仮定される。
【００７７】
１つのワードラインに連結されたメモリセルで、各メモリセルが格納する１つのビットは１つのページを形成することができる。例えば、１つのワードラインに連結されたメモリセルが格納する最下位ビットは最下位ページを形成することができる。１つのワードラインに連結されたメモリセルが格納する中間ビットは中間ページを形成することができる。１つのワードラインに連結されたメモリセルが格納する最上位ビットは最上位ページを形成することができる。
【００７８】
後述されるように、複数のページを同一のワードラインに連結されたメモリセルに格納することはリプログラム方法によって遂行されることができる。ダイレクトリプログラム方法は複数のプログラム段階を含む。
【００７９】
図４２に示したように、ダイレクトリプログラムは１−ステッププログラム、粗いプログラム、及び精巧なプログラムの順に遂行されることができる。より詳細には、１−ステッププログラム、粗いプログラム、及び精巧なプログラムが遂行される時のメモリセルの閾値電圧の変化が図４２に図示される。１−ステッププログラム、粗いプログラム、及び精巧なプログラムは隣接するワードラインからのカップリングを考慮して、だんだん向上される精密度を有することができる。１−ステッププログラム、粗いプログラム、及び精巧なプログラムは順次的に遂行されることができる。
【００８０】
例示的に、不揮発性メモリ１９０のワードラインは３つのプログラムアドレス及び３つの読出しアドレスを有することができる。３つのプログラムアドレスは１−ステッププログラム、粗いプログラム、及び精巧なプログラムに各々対応することができる。プログラムの時に、メモリマネージャー１８０は３つのプログラムアドレスの中で１つとプログラムコマンドとを不揮発性メモリ１９０に伝送することができる。読出しの時に、メモリマネージャー１８０は３つの読出しアドレスの中で１つと読出しコマンドを不揮発性メモリ１９０に伝送することができる。３つの読出しアドレスはＬＳＢ、ＣＳＢ、及びＭＳＢページに各々対応することができる。
【００８１】
例示的に、不揮発性メモリ１９０のワードラインは１つのプログラムアドレス及び３つの読出しアドレスを有することができる。プログラムの時に、メモリマネージャー１８０は１つのプログラムアドレス及び１−ステッププログラム、粗いプログラム、又は精巧なプログラムを示すプログラムコマンドを不揮発性メモリ１９０に伝送することができる。読出しの時に、メモリマネージャー１８０は３つの読出しアドレスの中で１つと読出しコマンドを不揮発性メモリ１９０に伝送することができる。３つの読出しアドレスはＬＳＢ、ＣＳＢ、及びＭＳＢページに各々対応することができる。
【００８２】
ダイレクトリプログラムは下でより詳細に説明される。
【００８３】
例示的に、不揮発性メモリ１９０はＮＡＮＤフラッシュメモリであり得る。しかし、不揮発性メモリ１９０はＮＡＮＤフラッシュメモリに限定されない。不揮発性メモリ１９０はＰＲＡＭ（Ｐｈａｓｅ−ｃｈａｎｇｅ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）、ＲＲＡＭ（登録商標）（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、ＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）等のような多様な不揮発性メモリの中で少なくとも１つを包含することができる。以下で、本発明の技術的思想を明確であり、簡潔に説明するために、不揮発性メモリ１９０はＮＡＮＤフラッシュメモリであることと仮定される。
【００８４】
例示的に、バス１１０、第１プロセッサー１２０、第１メモリ１３０、第２プロセッサー１４０、第２メモリ１５０、バッファマネージャー１６０、及びメモリマネージャー１８０は不揮発性メモリ１９０を制御するメモリコントローラＭＣを形成することができる。メモリコントローラＭＣは１つの半導体パッケージを形成することができる。バッファメモリ１７０はメモリコントローラＭＣと分離された他の１つの半導体パッケージを形成することができる。
【００８５】
図２は本発明の実施形態によるメモリコントローラＭＣの動作方法の第１例を示す順序図である。例示的に、不揮発性メモリ１９０のプログラムを制御する動作方法が図２に図示される。図２を参照すれば、Ｓ１１０段階で、ページデータが受信される。
【００８６】
Ｓ１２０段階で、受信されたページデータがバッファメモリ１７０に格納される。
【００８７】
Ｓ１３０段階で、受信されたページデータを示すプログラムエンティティーが生成され、生成されたプログラムエンティティーがバッファメモリ１７０に格納される。例示的に、１つのプログラムエンティティーはバッファメモリ１７０に格納されたデータの中で予め定まれた数のページデータを示すことがあり得る。ページデータは不揮発性メモリ１９０の１つのページにプログラムされるデータであり得る。例示的に、１つのプログラムエンティティーが示すページデータの数は不揮発性メモリ１９０の１つのワードラインに連結されたメモリセルにプログラムされるページデータの数であり得る。
【００８８】
Ｓ１４０段階で、プログラムエンティティーと連関されたプログラムキューに基づいて、データのダイレクトリプログラムが制御される。例示的に、Ｓ１３０段階で生成されたプログラムエンティティーに対応するすべてのページデータがバッファメモリ１７０に格納された後、Ｓ１４０段階のダイレクトリプログラムが遂行されることができる。
【００８９】
ダイレクトリプログラムは１つのワードラインに対応するページ（例えば、最下位ページ、中間ページ、及び最上位ページ）のデータを利用して、不揮発性メモリ１９０の１つのワードラインに連結されたメモリセルで２回以上のプログラムを遂行するプログラム方法であり得る。ダイレクトリプログラムは図４３を参照してより詳細に説明される。
【００９０】
図３はプログラムキューＰＱの例を示す。図１及び図３を参照すれば、プログラムキューＰＱはプログラムキュープール１５３から割当され得る。プログラムキューＰＱは複数のステージを含む。例えば、プログラムキュープール１５３から複数のキューが割当され得る。割当された複数のキューはプログラムキューＰＱのステージを各々形成することができる。
【００９１】
プログラムキューＰＱの各ステージに複数のエンティティーポインターＥＰが登録される（又はエンキュー（ｅｎｑｕｅｕｅ）される）ことができる。各ステージに登録されることができるエンティティーポインターＥＰの数はプログラムキューＰＱの深さを形成することができる。各ステージは独立的なキューを形成することができる。プログラムキューＰＱの深さはメモリコントローラＭＣに採用されるアルゴリズムの種類及び遂行方法によって調節され得る。例示的に、プログラムキューＰＱのステージの深さは互いに異なりに設定され得る。
【００９２】
プログラムキューＰＱのステージは基本ステージＱ０〜Ｑｎ及び追加ステージＱｎ＋１〜Ｑｎ＋ａを包含することができる。基本ステージＱ０〜Ｑｎは不揮発性メモリ１９０のダイレクトリプログラムが遂行される時、必須的に要求されるステージであり得る。例えば、基本ステージＱ０〜Ｑｎの数は、ダイレクトリプログラムが遂行される時、１つのワードラインに連結されたメモリセルのプログラムを完了するために要求されるプログラムの回数であり得る。
【００９３】
追加ステージＱｎ＋１〜Ｑｎ＋ａは不揮発性メモリ１９０の動作性能を向上させるために追加的に具備され得る。追加ステージＱｎ＋１〜Ｑｎ＋ａの数はメモリコントローラＭＣに採用されるアルゴリズムの種類及び遂行方法によって調節され得る。
【００９４】
本発明の技術的思想を簡潔であり、明確に説明するために、基本ステージは３つのステージＱ０〜Ｑ２で構成され、追加ステージは１つのステージＱＣで構成されることと仮定される。また、基本ステージＱ０〜Ｑ２及び追加ステージＱＣの深さは３であることと仮定される。
【００９５】
図４は第２プロセッサー１４０のステートマシン１４１が動作する方法を示す状態図である。図３及び図４を参照すれば、新しいメモリブロックが割当されれば、ステートマシン１４１は初期状態ＲＳＳに進入する。例えば、不揮発性メモリ１９０の新しいメモリブロックにプログラムされるデータ、コマンド、又はアドレスが受信されれば、新しいブロックが割当され得る。初期状態ＲＳＳで、プログラムキューＰＱが割当され得る。ステートマシン１４１は第２メモリ１５０のプログラムキュープール１５３から新しいプログラムキューＰＱを割当することができる。
【００９６】
割当されたプログラムキューＰＱでエンキュー（ｅｎｑｕｅｕｅ）が検出されれば、ステートマシン１４１は第０状態ＲＳ０に進入できる。より詳細には、割当されたプログラムキューＰＱの第１番目のステージＱ０でエンキューが検出されれば、ステートマシン１４１は第０状態ＲＳ０に進入できる。
【００９７】
第０状態ＲＳ０で、ステートマシン１４１はプログラムキューＰＱの第１番目のステージＱ０に存在するエンティティーポイントの中で第１番目のエンティティーポインター（例えば、最も先にエンキューされたエンティティーポインター）に対応するデータのプログラムをイッシュー（ｉｓｓｕｅ）することができる。メモリマネージャー１８０はプログラムイッシューにしたがって不揮発性メモリ１９０をプログラムすることができる。プログラムイッシューに対応するエンティティーポインターは次のステージ（例えば、第２番目のステージＱ１）にエンキューされる。以後、ステートマシン１４１は第１状態ＲＳ１に進入する。ステートマシン１４１はプログラムキューＰＱの第１番目のステージＱ１でエンキューが検出される時まで第１状態ＲＳ１を維持する。
【００９８】
割当されたプログラムキューＰＱの第１番目のステージＱ０でエンキューが検出されれば、第１状態ＲＳ１で、ステートマシン１４１はプログラムキューＰＱの第１番目のステージＱ０に存在するエンティティーポイントの中で第１番目のエンティティーポインター（例えば、最も先にエンキューされたエンティティーポインター）に対応するデータのプログラムをイッシュー（ｉｓｓｕｅ）することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ（例えば、第２番目のステージＱ１）にエンキューされる。
【００９９】
第１状態ＲＳ１にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン１４１は第２状態ＲＳ２に進入する。第２状態ＲＳ２で、ステートマシン１４１はプログラムキューＰＱの第２番目のステージＱ１に存在するエンティティーポイントの中で第１番目のエンティティーポインター（例えば、最も先にエンキューされたエンティティーポインター）に対応するデータのプログラムをイッシュー（ｉｓｓｕｅ）することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ（例えば、第３番目のステージＱ２）にエンキューされる。
【０１００】
第２状態ＲＳ２にしたがってプログラムイッシュー及びエンキューが遂行された後、ステートマシン１４１は第３状態ＲＳ３に進入できる。ステートマシン１４１はプログラムキューＰＱの第１番目のステージＱ０でエンキューが検出される時まで、第３状態ＲＳ３を維持することができる。
【０１０１】
第３状態ＲＳ３で、プログラムキューＰＱの第１番目のステージＱ０でエンキューが検出されれば、ステートマシン１４１はプログラムキューＰＱの第１番目のステージＱ０に存在するエンティティーポイントの中で第１番目のエンティティーポインター（例えば、最も先にエンキューされたエンティティーポインター）に対応するデータのプログラムをイッシュー（ｉｓｓｕｅ）することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ（例えば、第２番目のステージＱ１）にエンキューされる。
【０１０２】
第３状態ＲＳ３にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン１４１は第４状態ＲＳ４に進入する。第４状態ＲＳ４で、ステートマシン１４１はプログラムキューＰＱの第２番目のステージＱ１に存在するエンティティーポイントの中で第１番目のエンティティーポインター（例えば、最も先にエンキューされたエンティティーポインター）に対応するデータのプログラムをイッシュー（ｉｓｓｕｅ）することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ（例えば、第３番目のステージＱ２）にエンキューされる。
【０１０３】
第４状態ＲＳ４にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン１４１は第５状態ＲＳ５に進入する。第５状態ＲＳ５で、ステートマシン１４１はプログラムキューＰＱの第３番目のステージＱ２に存在するエンティティーポイントの中で第１番目のエンティティーポインター（例えば、最も先にエンキューされたエンティティーポインター）に対応するデータのプログラムをイッシュー（ｉｓｓｕｅ）することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ（例えば、追加ステージＱＣ）にエンキューされる。
【０１０４】
第５状態ＲＳ５にしたがってプログラムイッシュー及びエンキューを遂行した後、プログラムキューＰＱの状態又は不揮発性メモリ１９０のプログラム状態にしたがってステートマシン１４１の動作が分岐される。割当されたメモリブロックが満ちていることと検出される場合、ステートマシン１４１は第６状態ＲＳ６に進入できる。例示的に、バッファメモリ１７０に格納されたデータを利用して、割当されたメモリブロックのプログラムが完了されることができる場合、割当されたメモリブロックが満ちていることと判別され得る。
【０１０５】
例示的に、割当されたメモリブロックが満ちているか否かの判別は、バッファメモリ１７０に格納されたデータがプログラムされる不揮発性メモリ１９０のアドレスによって判別され得る。他の例として、割当されたメモリブロックが満ちているか否かの判別は、割当されたメモリブロックのワードラインの数及び割当されたメモリブロックで遂行されるプログラムの回数に基づいて、判別され得る。
【０１０６】
割当されたメモリブロックが満ちていない場合、ステートマシン１４１は第３状態ＲＳ３に進入する。第３状態ＲＳ３で、ステートマシン１４１はプログラムキューＰＱの第１番目のステージＱ０でエンキューが検出される時まで待機することができる。
【０１０７】
割当されたメモリブロックが満ちていない場合、ステートマシン１４１は第６状態ＲＳ６に進入する。第６状態ＲＳ６で、ステートマシン１４１はプログラムキューＰＱの第２番目のステージＱ１に存在するエンティティーポイントの中で第１番目のエンティティーポインター（例えば、最も先にエンキューされたエンティティーポインター）に対応するデータのプログラムをイッシュー（ｉｓｓｕｅ）することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ（例えば、第３番目のステージＱ２）にエンキューされる。
【０１０８】
第６状態ＲＳ６にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン１４１は第７状態ＲＳ７に進入する。第７状態ＲＳ７で、ステートマシン１４１はプログラムキューＰＱの第３番目のステージＱ２に存在するエンティティーポイントの中で第１番目のエンティティーポインター（例えば、最も先にエンキューされたエンティティーポインター）に対応するデータのプログラムをイッシュー（ｉｓｓｕｅ）することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ（例えば、追加ステージＱＣ）にエンキューされる。
【０１０９】
第７状態ＲＳ７にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン１４１は第８状態ＲＳ８に進入する。第８状態ＲＳ８で、ステートマシン１４１はプログラムキューＰＱの第３番目のステージＱ２に存在するエンティティーポイントの中で第１番目のエンティティーポインター（例えば、最も先にエンキューされたエンティティーポインター）に対応するデータのプログラムをイッシュー（ｉｓｓｕｅ）することができる。プログラムイッシューに対応するエンティティーポインターは次のステージ（例えば、追加ステージＱＣ）にエンキューされる。
【０１１０】
第８状態ＲＳ８にしたがってプログラムイッシュー及びエンキューを遂行した後、ステートマシン１４１は終了状態ＲＳＥに進入する。終了状態ＲＳＥで、ステートマシン１４１は割当されたプログラムキューＰＱをリリースし、割当されたブロックを閉じる（ｃｌｏｓｅ）ことができる。
【０１１１】
図５は本発明の実施形態によるメモリコントローラＭＣの動作方法の第２例を示す順序図である。図１、図３乃至図５を参照すれば、Ｓ２１０段階で、第１ページデータが受信され、受信された第１ページデータがバッファメモリ１７０に格納される。第１ページデータは不揮発性メモリ１９０の第１ワードラインに連結されたメモリセルに格納されるデータであり得る。第１ページデータは最下位ページデータであり得る。
【０１１２】
第１ワードラインのメモリセルにプログラムされる第１データが受信されることにしたがって、ステートマシン１４１はプログラムキューＰＱを割当することができる。
【０１１３】
Ｓ２２０段階で、バッファメモリ１７０に格納された第１ページデータを示す第１プログラムエンティティーが生成される。生成された第１プログラムエンティティーはバッファメモリ１７０に格納される。
【０１１４】
以後に、第１ページデータに対応するページデータが受信され得る。例えば、第１ページデータに対応する中間ページデータ及び最上位ページデータが受信され得る。受信されたページデータはバッファメモリ１７０に格納され得る。受信されたページデータがバッファメモリ１７０に格納されることにしたがって、第１ページデータに対応する第１プログラムエンティティーが更新され得る。第１プログラムエンティティーは中間ページデータ及び最上位ページデータに対する情報をさらに包含するように更新され得る。
【０１１５】
第１ワードラインのメモリセルにプログラムされるすべてのページデータが受信されれば、第１プログラムエンティティーがプログラムキューＰＱにエンキューされることができる。
【０１１６】
Ｓ２１０段階及びＳ２２０段階はステートマシン１４１の初期状態ＲＳＳに対応することができる。第１プログラムエンティティーがプログラムキューＰＱにエンキューされることにしたがって、ステートマシン１４１は第０状態ＲＳ０に進入できる。
【０１１７】
Ｓ２３０段階で、第１プログラムエンティティーのプログラム情報がメモリマネージャー１８０に伝送される。例えば、第１プログラムエンティティーがプログラムキューＰＱにエンキューされることにしたがって、第１プログラムエンティティーのプログラム情報がメモリマネージャー１８０に伝送され得る。第１プログラムエンティティーに含まれたプログラム情報に基づいて、第１ワードラインのメモリセルにプログラムされるデータ（例えば、第１ページデータを含む２又はその以上のページデータ）がメモリマネージャー１８０によって不揮発性メモリ１９０に伝送され得る。
【０１１８】
Ｓ２３０段階はステートマシン１４１の第０状態ＲＳ０に対応することができる。ステートマシン１４１は第１ワードラインに対応する第１プログラムエンティティーのプログラム情報に基づいて、第１ワードラインに連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン１４１は第１プログラムエンティティーをプログラムキューＰＱの次のステージにエンキューすることができる。第１プログラムエンティティーに基づいたプログラムがイッシューされることにしたがって、ステートマシン１４１は第１状態ＲＳ１に進入することができる。
【０１１９】
Ｓ２４０段階で、第２ページデータが受信され、受信された第２ページデータがバッファメモリ１７０に格納される。第２ページデータは不揮発性メモリ１９０の第２ワードラインのメモリセルにプログラムされるデータであり得る。第２ページデータは最下位ページデータであり得る。
【０１２０】
Ｓ２５０段階で、バッファメモリ１７０に格納された第２ページデータを示す第２プログラムエンティティーが生成される。生成された第２プログラムエンティティーはバッファメモリ１７０に格納される。
【０１２１】
以後に、第２ページデータに対応するページデータが受信され得る。例えば、第２ページデータに対応する中間ページデータ及び最上位ページデータが受信され得る。受信されたページデータはバッファメモリ１７０に格納され得る。受信されたページデータがバッファメモリ１７０に格納されることにしたがって、第２ページデータに対応する第２プログラムエンティティーが更新され得る。第２プログラムエンティティーは中間ページデータ及び最上位ページデータに対する情報をさらに包含するように更新され得る。
【０１２２】
第２ワードラインのメモリセルにプログラムされるすべてのページデータが受信されれば、第２プログラムエンティティーがプログラムキューＰＱにエンキューされることができる。
【０１２３】
Ｓ２６０段階で、第２プログラムエンティティーのプログラム情報がメモリマネージャー１８０に伝送される。例えば、第２プログラムエンティティーがプログラムキューＰＱにエンキューされることにしたがって、第２プログラムエンティティーのプログラム情報がメモリマネージャー１８０に伝送され得る。第２プログラムエンティティーに含まれたプログラム情報に基づいて、第２ワードラインのメモリセルにプログラムされるデータ（例えば、第２ページデータを含む２又はその以上のページデータ）がメモリマネージャー１８０によって不揮発性メモリ１９０に伝送され得る。Ｓ２４０段階乃至Ｓ２６０段階はステートマシン１４１の第１状態ＲＳ１に対応することができる。
【０１２４】
ステートマシン１４１は第２プログラムエンティティーをプログラムキューＰＱの次のステージにエンキューすることができる。第２プログラムエンティティーに基づいたプログラムがイッシューされることにしたがって、ステートマシン１４１は第２状態ＲＳ２に進入できる。
【０１２５】
Ｓ２７０段階で、第１プログラムエンティティーのプログラム情報がメモリマネージャー１８０に伝送される。そして、第１ワードラインのメモリセルにプログラムされるデータ（例えば、第１ページデータを含むすべてのページデータ）が第１プログラムエンティティーに基づいて、メモリマネージャー１８０によって不揮発性メモリ１９０に伝送される。
【０１２６】
Ｓ２７０段階はステートマシン１４１の第２状態ＲＳ２に対応することができる。ステートマシン１４１は第１ワードラインに対応する第１プログラムエンティティーに基づいて、第１ワードラインに連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン１４１は第１プログラムエンティティーをプログラムキューＰＱの次のステージにエンキューすることができる。第１プログラムエンティティーに基づいたプログラムがイッシューされることにしたがって、ステートマシン１４１は第３状態ＲＳ３に進入できる。
【０１２７】
図６乃至図２９は図５に図示された動作方法によってメモリシステム１００でデータが処理される過程を示す。
【０１２８】
先ず、図６を参照すれば、メッセージキュー１５１は第２メモリ１５０の特定な格納領域に割当され得る。メッセージキュー１５１は第１プロセッサー１２０から伝送されるメッセージ（例えば、コマンド又はアドレス）を格納できる複数のメッセージスロットＭＳを含む。複数のメッセージスロットの各々は不揮発性メモリ１９０の１つのプログラム管理単位に対応することができる。例えば、不揮発性メモリ１９０が１つのプレーンに構成される場合、１つのメッセージスロットは１つのプレーンの１つのメモリブロックの１つのワードラインの１つのページに対応することができる。不揮発性メモリ１９０が第１及び第２プレーンで構成される場合、１つのメッセージスロットは第１プレーンの１つのページ及び第２プレーンの１つのページに対応することができる。以下で、本発明の技術的思想を簡潔であり、明確に説明するために、１つのメッセージスロットは１つのページに対応することと仮定される。
【０１２９】
プログラムキュープール１５３は複数のプログラムキューを割当できる格納領域であり得る。エンティティーポインタープール１５５は複数のエンティティーポインターを割当できる格納領域であり得る。
【０１３０】
メモリシステム１００にデータ、コマンド、及びアドレスが伝送されない状態で、メッセージキュー１５１は空いた状態である。また、プログラムキューＰＱ及びエンティティーポインターは割当されない状態である。
【０１３１】
バッファ領域１７１はページデータを格納できる複数のバッファスロットＢＳを含む。複数のバッファスロットＢＳの各々は１つのページデータを格納することができる。
【０１３２】
エンティティー領域１７３はプログラムエンティティーを格納できる複数のエンティティースロットＥＳを含む。複数のエンティティースロットＥＳの各々は１つのプログラムエンティティーを格納することができる。１つのエンティティースロットＥＳは複数のサブスロットＳＳを含む。１つのエンティティースロットＥＳのサブスロットＳＳの数は不揮発性メモリ１９０の１つのワードラインのメモリセルにプログラムされるページデータの数であり得る。１つのサブスロットＳＳは１つのページデータに対応することができる。即ち、１つのエンティティースロットはバッファ領域１７１の複数のスロットに対する情報（例えば、アドレス）を格納することができる。１つのエンティティースロットは１つのワードラインにプログラムされるすべてのページデータに対する情報を格納することができる。
【０１３３】
１つのプログラムエンティティーはバッファ領域１７１の対応するバッファスロットＢＳに対する情報（例えば、バッファスロットＢＳのアドレス）を包含することができる。１つのプログラムエンティティーはバッファ領域１７１の複数のバッファスロットＢＳに格納されたデータがプログラムされる不揮発性メモリ１９０に対する情報（例えば、不揮発性メモリ１９０のアドレス）を包含することができる。
【０１３４】
例示的に、エンティティー領域１７３は複数のエンティティースロットＥＳに基づいて、キューを形成することができる。
【０１３５】
メモリシステム１００にデータ、コマンド、及びアドレスが伝送されない状態で、バッファ領域１７１及びエンティティー領域１７３は空いた状態である。
【０１３６】
メモリマネージャー１８０のコマンドキュー１８１は複数のコマンドスロットＣＳを含む。複数のコマンドスロットＣＳの各々は第２プロセッサー１４０の制御によって、バッファメモリ１７０から伝送されるコマンド（例えば、プログラムエンティティー）を格納するように構成される。メモリマネージャー１８０はコマンドキュー１８１に格納されたコマンドにしたがって不揮発性メモリ１９０を制御するように構成される。
【０１３７】
メモリシステム１００にデータ、コマンド、及びアドレスが伝送されない状態で、コマンドキュー１８１は空いた状態である。
【０１３８】
不揮発性メモリ１９０の１つのメモリブロックは複数のワードラインＷＬ＿０１〜ＷＬ＿ｋを含む。１つのワードラインＷＬに連結されたメモリセルは複数のページを形成する。１つのページは１つのページデータを格納することができる。例示的に、図６に図示されたメモリブロックは自由メモリブロックであり得る。
【０１３９】
以下で、不揮発性メモリ１９０の自由メモリブロックに対するプログラムが遂行される過程が説明される。
【０１４０】
図４及び図７を参照すれば、外部装置（例えば、ホスト）からページデータＰＤ１が受信される（１）。受信されたページデータＰＤ１は第１プロセッサー１２０及びバッファマネージャー１６０の制御にしたがって、バッファメモリ１７０のバッファ領域１７１のバッファスロットに格納される。例示的に、受信されるページデータＰＤ１は不揮発性メモリ１９０の第１番目のワードラインＷＬ＿０１の最下位ページにプログラムされる最下位ページデータであり得る。
【０１４１】
外部装置（例えば、ホスト）からページデータＰＤ１が受信されることにしたがって、ページデータＰＤ１がプログラムされるメモリブロックが割当され得る。即ち、ステートマシン１４１は初期状態ＲＳＳに進入できる。
【０１４２】
＜初期状態ＲＳＳ＞
受信されたページデータＰＤ１に対応するアドレス及びコマンドが受信される（２）。受信されたアドレス及びコマンドは第１プロセッサーＰ１及び第２プロセッサーＰ２の制御にしたがって、第２メモリ１５０のメッセージキュー１５１の第１番目のメッセージスロットにメッセージＭ１として登録（又はエンキュー）される。他の例として、アドレス及びコマンドに基づいて、メッセージＭ１が生成され、生成されたメッセージＭ１がメッセージキュー１５１にエンキューされることができる。
【０１４３】
例示的に、アドレス及びコマンドはページデータＰＤ１がバッファ領域１７１に格納された後に、メッセージキュー１５１にエンキューされることができる。メッセージＭ１はバッファ領域１７１に格納されたページデータＰＤ１に対する情報（例えば、バッファスロットのアドレス）及びページデータＰＤ１がプログラムされる不揮発性メモリ１９０の情報（例えば、割当されたメモリブロックのワードライン（又はページ）のアドレス）を包含することができる。メッセージＭ１はメッセージＭ１がプログラムと連関されることを示す情報をさらに包含することができる。
【０１４４】
メッセージＭ１及びページデータＰＤ１が受信されたが、メッセージＭ１及びプログラムデータＰＤ１を管理するプログラムキューＰＱは割当されていない。したがって、図８に示したように、メッセージキュー１５１にメッセージＭ１が格納されることにしたがって、プログラムキュープール１５３からプログラムキューＰＱが割当される。プログラムキューＰＱは基本ステージＱ０〜Ｑ２及び追加ステージＱＣを包含することができる。各ステージの深さは３であり得る。
【０１４５】
プログラムキューＰＱが割当される時、収集エンティティーポインターレジスターＧＥＰ及び収集カウントレジスターＧＮＣＴがさらに割当され得る。例示的に、収集エンティティーポインターレジスターＧＥＰ及び収集カウントレジスターＧＮＣＴはプログラムキュープール１５３から割当され得る。収集エンティティーポインターレジスターＧＥＰ及び収集カウントレジスターＧＮＣＴはプログラムキューＰＱの一部に管理され得る。
【０１４６】
プログラムキューＰＱが割当されれば、エンティティーポインタープール１５５からエンティティーポインターＥＰ１が割当され得る。エンティティーポインターＥＰ１はエンティティー領域１７３のエンティティースロットＥＳの中で１つのエンティティースロットを示す情報（例えば、１つのエンティティースロットのアドレス）を包含することができる。例示的に、エンティティーポインターＥＰ１が割当される時、エンティティー領域１７３のエンティティースロットＥＳの中で１つがエンティティーポインターＥＰ１と連関されたエンティティースロットに割当され得る。割当されたエンティティーポインターＥＰ１は収集エンティティーポインターレジスターＧＥＰに登録される。
【０１４７】
収集エンティティーポインターレジスターＧＥＰに登録されたエンティティーポインターに対応するプログラムエンティティーがすべてのページデータに対する情報を蓄積する時まで、エンティティーポインターは収集エンティティーポインターレジスターＧＥＰで管理され得る。
【０１４８】
例えば、特定なプログラムエンティティーが１つのワードラインのメモリセルにプログラムされるすべてのページデータ（例えば、最下位、中間、及び最上位ページデータ）に対する情報を有しないことがあり得る。この時、特定なプログラムエンティティーを示すエンティティーポインターは収集エンティティーポインターレジスターＧＥＰで管理される。特定なプログラムエンティティーが１つのワードラインのメモリセルにプログラムされるすべてのページデータに対する情報を有する時、特定なプログラムエンティティーはプログラムキューＰＱの第１番目のステージＱ０に登録（又はエンキュー）されることができる。
【０１４９】
エンティティーポインターＥＰ１が収集エンティティーポインターレジスターＧＥＰに登録される時、収集カウントレジスターＧＣＮＴのカウント値は０に設定される。登録されたエンティティーポインターに対応するプログラムエンティティーが１つのページデータに対応する情報を蓄積する時毎に、収集カウントレジスターＧＣＮＴのカウント値が増加される。即ち、収集カウントレジスターＧＣＮＴのカウント値は、収集エンティティーポインターレジスターＧＥＰで管理されるエンティティーポインターに対応するプログラムエンティティーに蓄積されたページデータに対する情報の数を示し得る。即ち、収集カウントレジスターＧＣＮＴのカウント値は、不揮発性メモリ１９０の１つのワードラインのメモリセルにプログラムされる全体ページデータの中で幾つかのページデータが収集されているかを示し得る。
【０１５０】
図９を参照すれば、メッセージキュー１５１に格納されたメッセージＭ１がエンティティー領域１７３の第１番目のエンティティースロットに伝送される。例示的に、伝送されたメッセージＭ１はエンティティー領域１７３のエンティティースロットにプログラムエンティティーＰＥ１として格納される。例示的に、伝送されたメッセージＭ１はエンティティー領域１７３のエンティティースロットの中でエンティティーポインターＥＰ１が示すエンティティースロットに格納され得る。伝送されたメッセージＭ１はエンティティースロットの第１番目のサブスロットに格納され得る。例示的に、メッセージＭ１に基づいて、プログラムエンティティーＰＥ１が生成され、生成されたプログラムエンティティーＰＥ１がエンティティースロットＥＳに格納され得る。
【０１５１】
エンティティー領域１７３のプログラムエンティティーＰＥ１にページデータＰＤ１に対する情報が格納されることにしたがって、収集カウントレジスターＧＣＮＴのカウント値が増加され得る。
【０１５２】
図１０を参照すれば、プログラムエンティティーＰＥ１にページデータＰＤ１に対する情報が格納された後、メッセージＭ１がメッセージキュー１５１からリリースされる。メッセージＭ１がリリースされた後、メッセージキュー１５１に格納された他のメッセージがシフトされることができる。他の例として、メッセージＭ１を格納する第１番目のメッセージスロットＭＳがリリースされることができる。第１番目のメッセージスロットＭＳがリリースされることにしたがって、第２番目のから位置するメッセージスロットＭＳがシフトされることができる。
【０１５３】
図１１を参照すれば、外部装置（例えばホスト）からページデータＰＤ２が受信される（１）。受信されたページデータＰＤ２は第１プロセッサー１２０及びバッファマネージャー１６０の制御にしたがって、バッファメモリ１７０のバッファ領域１７１の空いたバッファスロットＢＳに格納される。例示的に、受信されるページデータＰＤは不揮発性メモリ１９０の第１番目のワードラインＷＬ＿０１の中間ページにプログラムされるデータであり得る。
【０１５４】
受信されたページデータＰＤ２に対応するアドレス及びコマンドが受信される（２）。受信されたアドレス及びコマンドは第１プロセッサーＰ１及び第２プロセッサーＰ２の制御にしたがって第２メモリ１５０のメッセージキュー１５１のメッセージスロットＭＳにメッセージＭ２として格納される。例えば、アドレス及びコマンドに基づいて、メッセージＭ２が生成され、生成されたメッセージＭ２がメッセージキュー１５１に格納され得る。
【０１５５】
説明を簡単にするために、図７乃至図１０でメッセージキュー１５１に格納されたメッセージＭ１がリリースされた後に、図１１でメッセージＭ２がメッセージキュー１５１に格納されることと説明される。しかし、メッセージＭ２は以前メッセージＭ１のリリースの可否に関わらず、メッセージキュー１５１にエンキューされることができる。
【０１５６】
例えば、メッセージキュー１５１にメッセージＭ１が第１番目のメッセージスロットＭＳに格納され得る。メッセージＭ１が処理され、リリースされる前にメッセージＭ２が受信され得る。メッセージＭ２は第２番目のメッセージスロットＭＳに格納され得る。メッセージキュー１５１に格納されたメッセージＭ１、Ｍ２は格納された順序にしたがって順次的に処理され、リリースされることができる。
【０１５７】
プログラムキューＰＱが生成され、収集エンティティーポインターレジスターＧＥＰで管理されるエンティティーポインターＥＰ１が存在する。したがって、図１２に示したように、メッセージキュー１５１に格納されたメッセージＭ２が、エンティティーポインターＥＰ１が示すエンティティースロットに伝送される。メッセージＭ２はエンティティーポインターＥＰ１が示すエンティティースロットの第２番目のサブスロットに格納され得る。第１番目の及び第２番目のサブスロットに格納された情報が組合されて、プログラムエンティティーＰＥ１が更新され得る。
【０１５８】
エンティティー領域１７３のプログラムエンティティーＰＥ１にページデータＰＤ２に対する情報が格納されることにしたがって、収集カウントレジスターＧＣＮＴのカウント値が増加され得る。カウント値はエンティティーポインターＰＥ１が２つのページデータ（例えば、最下位ページデータ及び中間ページデータ）に対する情報を収集したことを示し得る。
【０１５９】
図１３を参照すれば、メッセージキュー１５１に格納されたメッセージＭ２がリリースされる。
【０１６０】
図１４を参照すれば、外部装置（例えばホスト）からページデータＰＤ３が受信される（１）。受信されたページデータＰＤ３はバッファ領域１７１の空いたバッファスロットに格納される。例示的に、受信されるページデータＰＤ３は不揮発性メモリ１９０の第１番目のワードラインＷＬ＿０１の最上位ページにプログラムされる最上位ページデータであり得る。
【０１６１】
受信されたページデータＰＤ３に対応するアドレス及びコマンドが受信される（２）。受信されたアドレス及びコマンドはメッセージキュー１５１にメッセージＭ３としてエンキューされる。例えば、アドレス及びコマンドに基づいて、メッセージＭ３が生成され、生成されたメッセージＭ３がメッセージキュー１５１にエンキューされることができる。
【０１６２】
プログラムキューＰＱが生成され、収集エンティティーポインターレジスターＧＥＰで管理されるエンティティーポインターＥＰ１が存在する。したがって、図１５に示したように、メッセージキュー１５１に格納されたメッセージＭ３が、エンティティーポインターＥＰ１が示すエンティティースロットに伝送される。メッセージＭ３はエンティティーポインターＥＰ１が示すエンティティースロットの第３番目のサブスロットに格納され得る。第１番目乃至第３番目のサブスロットに格納された情報が組合されて、プログラムエンティティーＰＥ１が更新され得る。
【０１６３】
エンティティー領域１７３のプログラムエンティティーＰＥ１にページデータＰＤ３に対する情報が格納されることにしたがって、収集カウントレジスターＧＣＮＴのカウント値が増加され得る。カウント値はプログラムエンティティーＰＥ１がすべてのページデータ（例えば、最下位ページデータ、中間ページデータ、及び最上位ページデータ）に対する情報を収集したことを示し得る。
【０１６４】
図１６を参照すれば、メッセージキュー１５１に格納されたメッセージＭ３がリリースされる。収集カウントレジスターＧＣＮＴのカウント値はすべてのページデータが収集されたことを示す。収集エンティティーポインターレジスターＧＥＰに格納されているエンティティーポインターＥＰ１はプログラムキューＰＱにエンキューされる。例えば、エンティティーポインターＥＰ１はプログラムキューＰＱの第１番目のステージＱ０にエンキューされることができる。エンティティーポインターＥＰ１がエンキューされることにしたがって、収集カウントレジスターＧＣＮＴのカウント値がリセットされることができる。
【０１６５】
エンティティーポインターＱ０がプログラムキューＰＱの第１番目のステージＱ０にエンキューされることにしたがって、ステートマシン１４１は第０状態ＲＳ０に進入できる。
【０１６６】
＜第０状態ＲＳ０＞
図１７を参照すれば、プログラムキューＰＱの第１番目のステージＱ０にエンキューされたエンティティーポインターＥＰ１が示すプログラムエンティティーＰＥ１がメモリマネージャー１８０のコマンドキュー１８１にエンキューされる。例えば、エンティティーポインターＥＰ１に含まれた情報に基づいて、エンティティー領域１７３のエンティティースロットＥＳの中でプログラムエンティティーＰＥ１が格納されたエンティティースロットが検出され得る。第２プロセッサー１４０の制御にしたがって、検出されたエンティティースロットに格納されたプログラム情報（例えば、プログラムエンティティーＰＥ１又はプログラムエンティティー情報）がコマンドキュー１８１にコマンドＣ１としてエンキューされることができる。例えば、プログラムエンティティーＰＥ１に基づいて、コマンドＣ１が生成され、生成されたコマンドＣ１がコマンドキュー１８１にエンキューされることができる。第２プロセッサー１４０はエンティティー領域１７３からプログラムエンティティーＰＥ１を読み出し、プログラムエンティティーＰＥ１をメモリマネージャー１８０で使用されるデータ構造に変換することができる。第２プロセッサー１４０は変換結果をコマンドＣ１としてコマンドキュー１８１にエンキューすることができる。
【０１６７】
図１８を参照すれば、コマンドＣ１がコマンドキュー１８１にエンキューされることにしたがって、コマンドＣ１が示すページデータＰＤ１、ＰＤ２、ＰＤ３が不揮発性メモリ１９０の第１番目のワードラインに対応するメモリセルにプログラムされる。メモリマネージャー１８０はコマンドキュー１８１に格納されたコマンドＣ１からページデータＰＤ１、ＰＤ２、ＰＤ３が検出されたバッファスロットのアドレスを検出することができる。メモリマネージャー１８０はコマンドＣ１からページデータＰＤ１、ＰＤ２、ＰＤ３がプログラムされる不揮発性メモリ１９０のアドレス（例えば、ワードライン又はページアドレス）を検出することができる。検出されたバッファスロットのアドレスに基づいて、ページデータＰＤ１、ＰＤ２、ＰＤ３がバッファマネージャー１６０を通じて読み出され得る。読み出されたページデータＰＤ１、ＰＤ２、ＰＤ３は検出された不揮発性メモリ１９０のアドレスと共に不揮発性メモリ１９０に伝送され得る。例えば、ページデータＰＤ１、ＰＤ２、ＰＤ３の中で少なくとも２つ以上のページデータ（例えば、少なくとも最下位ビットページデータ及び中間ビットページデータ）が不揮発性メモリ１９０に伝送され得る。
【０１６８】
例えば、ページデータＰＤ１、ＰＤ２、ＰＤ３の中で少なくとも２つ以上のページデータ（例えば、少なくとも最下位ビットページデータ及び中間ビットページデータ）が不揮発性メモリ１９０にプログラムされることができる。プログラムキューＰＱの第１番目のステージＱ０に登録されたエンティティーポインターＥＰ１又はプログラムエンティティーＰＥ１にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で１−ステップするプログラムであり得る。１−ステッププログラムされたメモリセルに連結されたワードラインＷＬ＿０１は点で満たされたことと図示される。
【０１６９】
コマンドキューＣ１のエンキューはプログラムエンティティーＰＥ１に対応するプログラムをイッシューする動作であり得る。コマンドＣ１がコマンドキュー１８１にエンキューされることにしたがって、エンティティーポインターＥＰ１はプログラムキューＰＱの第１番目のステージＱ０から第２番目のステージＱ１にステージアップされることができる。エンティティーポインターＥＰ１は第２番目のステージＱ１にエンキューされることができる。例示的に、エンティティーポインターＥＰ１はコマンドＣ１がコマンドキュー１８１にエンキューされた後に、第２番目のステージＱ１にエンキューされることができる。エンティティーポインターＥＰ１が第２番目のステージＱ１にエンキューされる動作は、ページデータＰＤ１、ＰＤ２、ＰＤ３がコマンドキュー１８１にエンキューされたコマンドＣ１にしたがって不揮発性メモリ１９０にプログラムされる動作と独立的に遂行されることができる。
【０１７０】
図１９を参照すれば、ページデータＰＤ１、ＰＤ２、ＰＤ３に基づいたプログラムが終了されることにしたがって、コマンドキュー１８１に登録されたコマンドＣ１がリリースされる。この時、コマンドＣ１に対応するプログラムエンティティーＰＥ１及びページデータＰＤ１、ＰＤ２、ＰＤ３はリリースされない。
【０１７１】
図４を参照して説明されたように、エンティティーポインターＥＰ１にしたがうプログラムがイッシューされ、エンティティーポインターＥＰ１がプログラムキューＰＱの第２番目のステージＱ１にエンキューされることにしたがって、ステートマシン１４１は第１状態ＲＳ１に進入できる。
【０１７２】
＜第１状態ＲＳ１＞
図２０を参照すれば、外部装置（例えばホスト）からページデータＰＤ４が受信される（１）。受信されたページデータＰＤ４はバッファ領域１７１の空いたバッファスロットに格納される。例示的に、受信されるページデータＰＤ４は不揮発性メモリ１９０の第２番目のワードラインＷＬ＿０２の最下位ページにプログラムされる最下位ページデータであり得る。
【０１７３】
受信されたページデータＰＤ４に対応するアドレス及びコマンドが受信される（２）。受信されたアドレス及びコマンドはメッセージキュー１５１にメッセージＭ４としてエンキューされる。例えば、アドレス及びコマンドに基づいて、メッセージＭ４が生成され、生成されたメッセージＭ４がメッセージキュー１５１にエンキューされることができる。
【０１７４】
ページデータＰＤ４がプログラムされるメモリブロックに対応するプログラムキューＰＱが生成されているので、プログラムキューＰＱは別に生成されない。収集エンティティーポインターレジスターＧＥＰで管理されるエンティティーポインターが存在しないので、エンティティーポインタープール１５５から新しいエンティティーポインターＥＰ２が割当され得る。エンティティーポインターＥＰ２は収集エンティティーポインターレジスターＧＥＰに登録され得る。例えば、エンティティーポインターＥＰ２は１つの空いたエンティティースロットと共に割当され得る。
【０１７５】
図２１を参照すれば、メッセージキュー１５１に格納されたメッセージＭ４が、エンティティーポインターＥＰ２が示すエンティティースロットに伝送される。メッセージＭ４はエンティティーポインターＥＰ１が示すエンティティースロットの第１番目のサブスロットにプログラムエンティティーＰＥ２として格納され得る。
【０１７６】
エンティティー領域１７３のプログラムエンティティーＰＥ２にページデータＰＤ４に対する情報が格納されることにしたがって、収集カウントレジスターＧＣＮＴのカウント値が増加され得る。カウント値はプログラムエンティティーＰＥ２が１つのページデータ（例えば、最下位ページのデータ）に対する情報を収集したことを示し得る。
【０１７７】
図２２を参照すれば、メッセージキュー１５１に格納されたメッセージＭ４がリリースされる。
【０１７８】
図１１乃至図１３を参照して説明されたように、プログラムエンティティーＰＥ２に対応する１つのページデータ（例えば、中間ページデータ）が収集されることができる。また、図１４乃至図１６を参照して説明されたように、プログラムエンティティーＰＥ２に対応する他の１つのページデータ（例えば、最上位ページデータ）が収集されることができる。
【０１７９】
プログラムエンティティーＰＥ２に対応するすべてのページデータが収集された例が図２３に図示される。図２３で、プログラムエンティティーＰＥ２に対応する中間ページデータはＰＤ５であり、最上位ページデータはＰＤ６であり得る。
【０１８０】
プログラムエンティティーＰＥ２に対応するすべてのページデータが収集されれば、収集カウントレジスターＧＣＮＴのカウント値は３であり得る。カウント値に応答して、プログラムエンティティーＰＥ２を示すエンティティーポインターＥＰ２はプログラムキューＰＱの第１番目のステージＱ０にエンキューされることができる。エンティティーポインターＥＰ２が第１番目のステージＱ０にエンキューされれば、収集カウントレジスターＧＣＮＴのカウント値はリセットされることができる。
【０１８１】
図２４を参照すれば、エンティティーポインターＥＰ２がプログラムキューＰＱの第１番目のステージＱ０にエンキューされることにしたがって、エンティティーポインターＥＰ２が示すプログラムエンティティーＰＥ２のプログラム情報がコマンドＣ２としてコマンドキュー１８１にエンキューされる。プログラムエンティティーＰＥ２に基づいて、コマンドＣ２が生成され、生成されたコマンドＣ２がコマンドキュー１８１にエンキューされることができる。
【０１８２】
図２５を参照すれば、コマンドＣ２がコマンドキュー１８１にエンキューされることにしたがって、プログラムエンティティーＰＥ２が示すページデータＰＤ４、ＰＤ５、ＰＤ６に基づいて、プログラムエンティティーＰＥ２が示すワードラインＷＬ＿０２のメモリセルがプログラムされる。例えば、ページデータＰＤ４、ＰＤ５、ＰＤ６の中で少なくとも２つ以上のページデータ（例えば、少なくとも最下位ページデータ及び中間ページデータ）が不揮発性メモリ１９０に伝送され得る。例えば、ページデータＰＤ４、ＰＤ５、ＰＤ６の中で少なくとも２つのページデータ（例えば、少なくとも最下位ページデータ及び中間ページデータ）が不揮発性メモリ１９０にプログラムされることができる。プログラムキューＰＱの第１番目のステージＱ０に登録されたエンティティーポインターＥＰ２又はプログラムエンティティーＰＥ２にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で１−ステップするプログラムであり得る。１−ステッププログラムされたメモリセルに連結されたワードラインＷＬ＿０２は点で満たされたことと図示される。
【０１８３】
コマンドＣ２がコマンドキュー１８１にエンキューされることにしたがって、コマンドＣ２のエンキューを誘発したエンティティーポインターＥＰ２はプログラムキューＰＱの次のステージＱ１にエンキューされることができる。
【０１８４】
図４を参照して説明されたように、第１状態ＲＳ１にしたがってプログラムキューＰＱの第１番目のステージＱ０に登録されたエンティティーポインターＥＰ２に基づいたプログラムがイッシューされ、エンティティーポインターＥＰ２が次のステージＱ１にエンキューされれば、ステートマシン１４１は第２状態ＲＳ２に進入できる。
【０１８５】
図２６を参照すれば、ページデータＰＤ４、ＰＤ５、ＰＤ６に基づいたプログラムが終了されれば、コマンドＣ２はコマンドキュー１８１からリリースされる。この時、コマンドＣ２に対応するプログラムエンティティーＰＥ２及びページデータＰＤ４、ＰＤ５、ＰＤ６はリリースされない。
【０１８６】
説明を簡単にするために、エンティティーポインターＥＰ２に基づいたプログラムが終了された後、ステートマシン１４１が第２状態ＲＳ２に進入する例が説明される。しかし、ステートマシン１４１はエンティティーポインターＥＰ２のエンキューに応答してコマンドＣ２がコマンドキュー１８１にエンキューされることにしたがって、第２状態ＲＳ２に進入できる。ステートマシン１４１は不揮発性メモリ１９０でコマンドＣ２にしたがうプログラムが遂行の中であっても、第２状態ＲＳ２に進入できる。ステートマシン１４１はコマンドＣ２がリリースされる前に第２状態ＲＳ２に進入できる。
【０１８７】
＜第２状態ＲＳ２＞
図４及び図２７を参照すれば、プログラムキューＰＱの第２番目のスロットＱ１に登録された第１番目のエンティティーポインターＥＰ１に基づいた動作が遂行される。例えば、エンティティーポインターＥＰ１が示すプログラムエンティティーＰＥ１のプログラム情報がコマンドＣ３としてコマンドキュー１８１にエンキューされる。プログラムエンティティーＰＥ１に基づいて、コマンドＣ３が生成され、生成されたコマンドＣ３がコマンドキュー１８１にエンキューされることができる。
【０１８８】
図２８を参照すれば、コマンドＣ３がコマンドキュー１８１にエンキューされることにしたがって、プログラムエンティティーＰＥ１が示すページデータＰＤ１、ＰＤ２、ＰＤ３に基づいて、プログラムエンティティーＰＥ１が示すワードラインＷＬ＿０１のメモリセルがプログラムされる。プログラムキューＰＱの第２番目のステージＱ１に登録されたエンティティーポインターＥＰ１又はプログラムエンティティーＰＥ１にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で粗い（ｃｏａｒｓｅ）するプログラムであり得る。粗いプログラムされたメモリセルに連結されたワードラインＷＬ＿０２は斜線で満たされたことと図示される。
【０１８９】
コマンドＣ３がコマンドキュー１８１にエンキューされることにしたがって、コマンドＣ３のエンキューを誘発したエンティティーポインターＥＰ１はプログラムキューＰＱの次のステージＱ２にエンキューされることができる。
【０１９０】
図４を参照して説明されたように、第２状態ＲＳ２にしたがってプログラムキューＰＱの第２番目のステージＱ１に登録されたエンティティーポインターＥＰ１に基づいたプログラムがイッシューされれば、ステートマシン１４１は第３状態ＲＳ３に進入できる。
【０１９１】
図２９を参照すれば、ページデータＰＤ１、ＰＤ２、ＰＤ３に基づいたプログラムが終了されれば、コマンドＣ３はコマンドキュー１８１からリリースされる。この時、コマンドＣ３に対応するプログラムエンティティーＰＥ１及びページデータＰＤ１、ＰＤ２、ＰＤ３はリリースされない。
【０１９２】
図３０は本発明の実施形態によるメモリコントローラＭＣの動作方法の第３例を示す順序図である。例示的に、図５に図示された動作に後続する動作が図３０に図示される。図１、図３、図４、及び図３０を参照すれば、Ｓ３１０段階で、第３ページデータが受信され、受信された第３ページデータがバッファメモリ１７０に格納される。第３ページデータは不揮発性メモリ１９０の第３ワードラインＷＬ＿０３に連結されたメモリセルにプログラムされるページデータであり得る。第３データは最下位ページデータであり得る。
【０１９３】
Ｓ３２０段階で、バッファメモリ１７０に格納された第３ページデータを示す第３プログラムエンティティーが生成される。生成された第３プログラムエンティティーはバッファメモリ１７０に格納される。
【０１９４】
第３ワードラインＷＬ＿０３のメモリセルにプログラムされるすべてのデータが受信されれば、第３プログラムエンティティーがプログラムキューＰＱにエンキューされることができる。
【０１９５】
Ｓ３３０段階で、第３プログラムエンティティーのプログラム情報がメモリマネージャー１８０に伝送される。そして、第３ページデータを含むページデータ（例えば、第３ワードラインＷＬ＿０３にプログラムされる２又はその以上のページデータ）が第３プログラムエンティティーのプログラム情報に基づいて、メモリマネージャー１８０によって不揮発性メモリ１９０に伝送される。
【０１９６】
Ｓ３１０段階乃至Ｓ３３０段階はステートマシン１４１の第３状態ＲＳ３に対応することができる。ステートマシン１４１は第３ワードラインＷＬ＿０３に対応する第３プログラムエンティティーに基づいて、第３ワードラインＷＬ＿０３に連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン１４１は第３プログラムエンティティーをプログラムキューＰＱの次のステージにエンキューすることができる。
【０１９７】
Ｓ３４０段階で、第２プログラムエンティティーのプログラム情報がメモリマネージャー１８０に伝送される。そして、第２データがメモリマネージャー１８０によって第２プログラムエンティティーのプログラム情報に基づいて、不揮発性メモリ１９０に伝送される。
【０１９８】
Ｓ３４０段階はステートマシン１４１の第４状態ＲＳ４に対応することができる。ステートマシン１４１は第２ワードラインＷＬ＿０２のメモリセルに対応する第２プログラムエンティティーに基づいて、第２ワードラインＬＷ＿０２に連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン１４１は第２プログラムエンティティーをプログラムキューＰＱの次のステージにエンキューすることができる。
【０１９９】
Ｓ３５０段階で、第１プログラムエンティティーのプログラム情報がメモリマネージャー１８０に伝送される。そして、第１データが第１プログラムエンティティーのプログラム情報に基づいて、メモリマネージャー１８０によって不揮発性メモリ１９０に伝送される。
【０２００】
Ｓ３５０段階はステートマシン１４１の第５状態ＲＳ５に対応することができる。ステートマシン１４１は第１ワードラインＷＬ＿０１に対応する第１プログラムエンティティーに基づいて、第１ワードラインＷＬ＿０１に連結されたメモリセルのプログラムをイッシューすることができる。ステートマシン１４１は第１プログラムエンティティーをプログラムキューＰＱの次のステージにエンキューすることができる。
【０２０１】
図３１乃至図４１は図３０に図示された動作方法によってメモリシステムでデータが処理される過程を示す。以下で、図３０を参照して説明されたように、ステートマシン１４１の動作が第３状態ＲＳ３から説明される。
【０２０２】
＜第３状態ＲＳ３＞
図４、図３０、及び図４１を参照すれば、外部装置（例えばホスト）からページデータＰＤ７が受信される（１）。受信されたページデータＰＤ７はバッファ領域１７１の空いたバッファスロットに格納される。例示的に、受信されるページデータＰＤ７は不揮発性メモリ１９０の第３番目のワードラインＷＬ＿０３の最下位ページにプログラムされる最下位ページデータであり得る。
【０２０３】
受信されたページデータＰＤ７に対応するアドレス及びコマンドが受信される（２）。受信されたアドレス及びコマンドはメッセージキュー１５１にメッセージＭ５としてエンキューされる。例えば、アドレス及びコマンドに基づいて、メッセージＭ５が生成され、生成されたメッセージＭ５がメッセージキュー１５１にエンキューされることができる。
【０２０４】
ページデータＰＤ７がプログラムされるメモリブロックに対応するプログラムキューＰＱが生成されるので、プログラムキューＰＱは別に生成されない。収集エンティティーポインターレジスターＧＥＰで管理されるエンティティーポインターが存在しないので、エンティティーポインタープール１５５から新しいエンティティーポインターＥＰ３が割当され得る。エンティティーポインターＥＰ３は収集エンティティーポインターレジスターＧＥＰに登録され得る。エンティティーポインターＥＰ３はエンティティー領域１７３のエンティティースロットの中で１つの空いたエンティティースロットを示し得る。例えば、エンティティーポインターＥＰ３は１つの空いたエンティティースロットと共に割当され得る。
【０２０５】
以後に、図２１及び図２２を参照して説明されたように、エンティティーポインターＥＰ３に対応するプログラムエンティティーＰＥ３がエンティティー領域１７３に格納され得る。
【０２０６】
図１１乃至図１３を参照して説明されたように、プログラムエンティティーＰＥ３に対応する１つのページデータ（例えば、中間ページデータ）が収集されることができる。また、図１４乃至図１６を参照して説明されたように、プログラムエンティティーＰＥ３に対応する他の１つのページデータ（例えば、最上位ページデータ）が収集されることができる。
【０２０７】
プログラムエンティティーＰＥ３に対応するすべてのページデータが収集された例が図３２に図示される。図３２で、プログラムエンティティーＰＥ３に対応する中間ページデータはＰＤ８であり、最上位ページデータはＰＤ９であり得る。
【０２０８】
プログラムエンティティーＰＥ２に対応するすべてのページデータが収集されれば、プログラムエンティティーＰＥ３を示すエンティティーポインターＥＰ３はプログラムキューＰＱの第１番目のステージＱ０にエンキューされることができる。
【０２０９】
図４、図３０、及び図３３を参照すれば、エンティティーポインターＥＰ３がプログラムキューＰＱの第１番目のステージＱ０にエンキューされることにしたがって、エンティティーポインターＥＰ３が示すプログラムエンティティーＰＥ３がコマンドＣ４としてコマンドキュー１８１にエンキューされる。他の例として、プログラムエンティティーＰＥ３に基づいて、コマンドＣ４が生成され、生成されたコマンドＣ４がコマンドキュー１８１にエンキューされることができる。
【０２１０】
図３４を参照すれば、コマンドＣ４がコマンドキュー１８１にエンキューされることにしたがって、プログラムエンティティーＰＥ３が示すページデータＰＤ７、ＰＤ８、ＰＤ９に基づいて、プログラムエンティティーＰＥ３が示すワードラインＷＬ＿０３のメモリセルがプログラムされる。例えば、ページデータＰＤ７、ＰＤ８、ＰＤ９の中で少なくとも２つ以上のページデータ（例えば、少なくとも最下位ビットページデータ及び中間ビットページデータ）が不揮発性メモリ１９０に伝送され得る。例えば、ページデータＰＤ７、ＰＤ８、ＰＤ９の中で少なくとも２つ以上のページデータ（例えば、少なくとも最下位ビットページデータ及び中間ビットページデータ）が不揮発性メモリ１９０にプログラムされることができる。プログラムキューＰＱの第１番目のステージＱ０に登録されたエンティティーポインターＥＰ３又はプログラムエンティティーＰＥ３にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で１−ステップするプログラムであり得る。１−ステッププログラムされたメモリセルに連結されたワードラインＷＬ＿０３は点で満たされたことと図示される。
【０２１１】
コマンドＣ４がコマンドキュー１８１にエンキューされることにしたがって、コマンドＣ４のエンキューを誘発したエンティティーポインターＥＰ３はプログラムキューＰＱの次のステージＱ１にエンキューされることができる。
【０２１２】
図３５を参照すれば、ページデータＰＤ７、ＰＤ８、ＰＤ９に基づいたプログラムが終了されれば、コマンドＣ４はコマンドキュー１８１からリリースされる。この時、コマンドＣ４に対応するプログラムエンティティーＰＥ３及びページデータＰＤ７、ＰＤ８、ＰＤ９はリリースされない。
【０２１３】
図４を参照して説明されたように、第３状態ＲＳ３にしたがってプログラムキューＰＱの第１番目のステージＱ０に登録されたエンティティーポインターＥＰ３に基づいたプログラムがイッシューされ、エンティティーポインターＥＰ３がプログラムキューＰＱの次のステージにエンキューされれば、ステートマシン１４１は第４状態ＲＳ４に進入できる。
【０２１４】
説明を簡単にするために、エンティティーポインターＥＰ３に基づいたプログラムが終了された後、ステートマシン１４１が第４状態ＲＳ４に進入する例が説明される。しかし、ステートマシン１４１はエンティティーポインターＥＰ３のエンキューに応答してコマンドＣ４がコマンドキュー１８１にエンキューされることにしたがって、第４状態ＲＳ４に進入できる。ステートマシン１４１は不揮発性メモリ１９０でコマンドＣ４にしたがうプログラムが遂行の中であっても、第４状態ＲＳ４に進入できる。ステートマシン１４１はコマンドＣ４がリリースされる前に第４状態ＲＳ４に進入できる。
【０２１５】
＜第４状態ＲＳ４＞
図４及び図３６を参照すれば、コマンドＣ４にしたがうプログラムがイッシューされることにしたがって、プログラムキューＰＱの第２番目のスロットＱ１に登録された第１番目のエンティティーポインターＥＰ２に基づいた動作が遂行される。例えば、エンティティーポインターＥＰ２が示すプログラムエンティティーＰＥ２がコマンドＣ５としてコマンドキュー１８１にエンキューされる。他の例として、プログラムエンティティーＰＥ２に基づいて、コマンドＣ５が生成され、生成されたコマンドＣ５がコマンドキュー１８１にエンキューされることができる。
【０２１６】
図３７を参照すれば、コマンドＣ５がコマンドキュー１８１にエンキューされることにしたがって、プログラムエンティティーＰＥ２が示すページデータＰＤ４、ＰＤ５、ＰＤ６に基づいて、プログラムエンティティーＰＥ２が示すワードラインＷＬ＿０２のメモリセルがプログラムされる。プログラムキューＰＱの第２番目のステージＱ１に登録されたエンティティーポインターＥＰ２又はプログラムエンティティーＰＥ２にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で粗い（ｃｏａｒｓｅ）するプログラムであり得る。粗いプログラムされたメモリセルに連結されたワードラインＷＬ＿０２は斜線で満たされたことと図示される。
【０２１７】
コマンドＣ５がコマンドキュー１８１にエンキューされることにしたがって、コマンドＣ５のエンキューを誘発したエンティティーポインターＥＰ２はプログラムキューＰＱの次のステージＱ２にエンキューされることができる。
【０２１８】
図３８を参照すれば、ページデータＰＤ４、ＰＤ５、ＰＤ６に基づいたプログラムが終了されれば、コマンドＣ５はコマンドキュー１８１からリリースされる。この時、コマンドＣ５に対応するプログラムエンティティーＰＥ２及びページデータＰＤ４、ＰＤ５、ＰＤ６はリリースされない。
【０２１９】
図４を参照して説明されたように、第４状態ＲＳ４にしたがってプログラムキューＰＱの第２番目のステージＱ１に登録されたエンティティーポインターＥＰ２に基づいたプログラムがイッシューされ、エンティティーポインターＥＰ２がプログラムキューＰＱの次のステージにエンキューされれば、ステートマシン１４１は第５状態ＲＳ５に進入できる。
【０２２０】
＜第５状態ＲＳ５＞
図４及び図３９を参照すれば、コマンドＣ５にしたがうプログラムがイッシューされることにしたがって、プログラムキューＰＱの第３番目のスロットＱ０に登録された第１番目のエンティティーポインターＥＰ１に基づいた動作が遂行される。例えば、エンティティーポインターＥＰ１が示すプログラムエンティティーＰＥ１がコマンドＣ６としてコマンドキュー１８１にエンキューされる。他の例として、プログラムエンティティーＰＥ１に基づいて、コマンドＣ６が生成され、生成されたコマンドＣ６がコマンドキュー１８１にエンキューされることができる。
【０２２１】
図４０を参照すれば、コマンドＣ６がコマンドキュー１８１にエンキューされることにしたがって、プログラムエンティティーＰＥ１が示すページデータＰＤ１、ＰＤ２、ＰＤ３に基づいて、プログラムエンティティーＰＥ１が示すワードラインＷＬ＿０１のメモリセルがプログラムされる。プログラムキューＰＱの第３番目のステージＱ２に登録されたエンティティーポインターＥＰ１又はプログラムエンティティーＰＥ１にしたがうプログラムはダイレクトリプログラムのプログラム段階の中で精巧な（ｆｉｎｅ）するプログラムであり得る。精巧なプログラムされたメモリセルに連結されたワードラインＷＬ＿０１は粗いプログラムされたメモリセルに表示された斜線と反対方向の斜線で満たされたことと図示される。
【０２２２】
コマンドＣ６がコマンドキュー１８１にエンキューされることにしたがって、コマンドＣ６のエンキューを誘発したエンティティーポインターＥＰ１はプログラムキューＰＱの次のステージＱＣにエンキューされることができる。
【０２２３】
図４１を参照すれば、ページデータＰＤ１、ＰＤ２、ＰＤ３に基づいたプログラムが終了されれば、コマンドＣ６はコマンドキュー１８１からリリースされる。この時、コマンドＣ６に対応するプログラムエンティティーＰＥ１及びページデータＰＤ１、ＰＤ２、ＰＤ３はリリースされない。
【０２２４】
例示的に、プログラムキューＰＱに追加ステージＱＣが存在しなく、基本ステージＱ０〜Ｑ２のみが存在する場合、エンティティーポインターＥＰ１はリリースされることができる。エンティティーポインターＥＰ１がリリースされれば、エンティティーポインターＥＰ１に対応するプログラムエンティティーＰＥ１及びページデータＰＤ１、ＰＤ２、ＰＤ３がバッファメモリ１７０からリリースされることができる。
【０２２５】
第５状態ＲＳ５にしたがう動作が遂行された後、ステートマシン１４１は第３状態ＲＳ３又は第６状態ＲＳ６に進入できる。
【０２２６】
例示的に、不揮発性メモリ１９０の割当されたメモリブロックの最後のワードラインＷＬ＿ｋにプログラムされるすべてのページデータがバッファメモリ１７０に格納されていない場合、ステートマシン１４１は第３状態ＲＳ３に進入できる。例えば、図４１に示したように第３番目のワードラインＷＬ＿０３までプログラムが遂行された場合、次のワードラインＷＬ＿０４にプログラムされるすべてのページデータが受信される時まで、ステートマシン１４１は第３状態ＲＳ３で待機することができる。
【０２２７】
次のワードラインＷＬ＿０４にプログラムされるすべてのページデータが受信されれば、第３状態ＲＳ３で、次のワードラインＷＬ＿０４に対して１−ステッププログラムが遂行されることができる。第４状態ＲＳ４でワードラインＷＬ＿０３に対して粗いプログラムが遂行されることができる。第５状態ＲＳ５でワードラインＷＬ＿０２に対して精巧なプログラムが遂行されることができる。
【０２２８】
即ち、第３状態ＲＳ３でワードラインＷＬ＿ｉ（ｉはｋより小さい整数）のページデータが受信され、ワードラインＷＬ＿ｉに対応するエンティティーポインターＥＰｉ及びプログラムエンティティーＰＥｉが生成され得る。エンティティーポインターＥＰｉがプログラムキューＰＱの第１番目のステージＱ０にエンキューされることにしたがって、ワードラインＷＬ＿ｉに対して１−ステッププログラムが遂行されることができる。エンティティーポインターＥＰｉはプログラムキューＰＱの第２番目のステージＱ１にエンキューされることができる。
【０２２９】
第４状態ＲＳ４で、プログラムキューＰＱの第２番目のステージＱ１に登録された第１番目のエンティティーポインターＥＰｉ−１にしたがって、ワードラインＷＬ＿ｉ−１に対して粗いプログラムが遂行されることができる。エンティティーポインターＥＰｉ−１はプログラムキューＰＱの第３番目のステージＱ２にエンキューされることができる。
【０２３０】
第５状態ＲＳ５で、プログラムキューＰＱの第３番目のステージＱ２に登録された第１番目のエンティティーポインターＥＰｉ−２にしたがって、ワードラインＷＬ＿ｉ−２に対して精巧なプログラムが遂行されることができる。エンティティーポインターＥＰ＿ｉ−２はプログラムキューＰＱの追加ステージＱＣにエンキューされることができる。
【０２３１】
第３状態ＲＳ３で、不揮発性メモリ１９０の割当されたメモリブロックの最後のワードラインＷＬ＿ｋのページデータが受信され得る。ワードラインＷＬ＿ｋに対応するエンティティーポインターＥＰｋ及びプログラムエンティティーＰＥｋが生成され得る。エンティティーポインターＥＰｋがプログラムキューＰＱの第１番目のステージＱ０にエンキューされることにしたがって、ワードラインＷＬ＿ｋに対して１−ステッププログラムが遂行されることができる。エンティティーポインターＥＰｋはプログラムキューＰＱの第２番目のステージＱ１にエンキューされることができる。
【０２３２】
第４状態ＲＳ４で、プログラムキューＰＱの第２番目のステージＱ１に登録された第１番目のエンティティーポインターＥＰｋ−１にしたがって、ワードラインＷＬ＿ｋ−１に対して粗いプログラムが遂行されることができる。エンティティーポインターＥＰｋ−１はプログラムキューＰＱの第３番目のステージＱ２にエンキューされることができる。
【０２３３】
第５状態ＲＳ５で、プログラムキューＰＱの第３番目のステージＱ２に登録された第１番目のエンティティーポインターＥＰｋ−２にしたがって、ワードラインＷＬ＿ｋ−２に対して精巧なプログラムが遂行されることができる。エンティティーポインターＥＰ＿ｋ−１はプログラムキューＰＱの追加ステージＱＣにエンキューされることができる。
【０２３４】
この状態で、割当されたメモリブロックの最後のワードラインＷＬ＿ｋに対応するページデータはバッファ領域１７１に格納されている。したがって、ステートマシン１４１は割当されたメモリブロックが満ちていたことと判断し、第６状態ＲＳ６に進入できる。
【０２３５】
第６状態ＲＳ６で、プログラムキューＰＱの第２番目のステージＱ１に格納された第１番目のエンティティーポインターＥＰｋにしたがって、ワードラインＷＬ＿ｋに対して粗いプログラムが遂行されることができる。エンティティーポインターＥＰｋはプログラムキューＰＱの第３番目のステージＱ２にエンキューされることができる。
【０２３６】
第７状態ＲＳ７で、プログラムキューＰＱの第３番目のステージＱ２に格納された第１番目のエンティティーポインターＥＰｋ−１にしたがって、ワードラインＷＬ＿ｋ−１に対して精巧なプログラムが遂行されることができる。エンティティーポインターＥＰｋ−１はプログラムキューＰＱの追加ステージＱＣにエンキューされることができる。
【０２３７】
第８状態ＲＳ８で、プログラムキューＰＱの第３番目のステージＱ２に格納された第１番目のエンティティーポインターＥＰｋにしたがって、ワードラインＷＬ＿ｋに対して精巧なプログラムが遂行されることができる。エンティティーポインターＥＰｋはプログラムキューＰＱの追加ステージＱＣにエンキューされることができる。
【０２３８】
ステートマシン１４１の状態にしたがってダイレクトリプログラムが遂行される順序が表１に記載される。
【０２３９】
【表１】
2014182792.tif 000003
【０２４０】
終了状態ＲＳＥで、プログラムキューＰＱがリリースされ、割当されたブロックが閉じられる。プログラムキューＰＱがリリースされる時、プログラムキューＰＱと連関されたエンティティーポインターＥＰ、プログラムエンティティーＰＥ、及びページデータが共にリリースされることができる。
【０２４１】
例示的に、図５乃至図４１で、本発明の技術的思想を簡潔であり、明確に説明するために、１つのワードラインに対するプログラムが終了された後に、次のワードラインに対するプログラム要請が受信されることと説明された。しかし、メモリコントローラＭＣは複数の要請を非同期式に（ａｓｙｎｃｈｒｏｎｏｕｓ）又はパイプライン（ｐｉｐｅｌｉｎｅ）方式に処理することができる。
【０２４２】
例えば、第１プロセッサー１２０はメモリコントローラＭＣに属する他の装置の動作状態に関わらず、外部装置（例えば、ホスト）から受信されるデータをバッファ領域１７１に格納することができる。第１プロセッサー１２０はバッファ領域１７１に空いたスロットが存在する限り、外部装置から受信されるデータをバッファ領域１７１に格納することができる。
【０２４３】
第１プロセッサー１２０はメモリコントローラＭＣに属する他の装置の動作状態に関わらず、外部装置（例えば、ホスト）から受信されるコマンド又はアドレスをメッセージＭとしてメッセージキュー１５１に格納することができる。第１プロセッサー１２０はメッセージキュー１５１に空いたスロットが存在する限り、メッセージキュー１５１に新しいメッセージＭを登録することができる。
【０２４４】
第２プロセッサー１４０はメモリコントローラＭＣに属する他の装置の動作状態に関わらず、メッセージキュー１５１に格納されたメッセージＭを順次的に処理することができる。第２プロセッサー１４０はメッセージキュー１５１に登録された順に、メッセージキュー１５１に格納されたメッセージＭを順次的に処理することができる。メッセージキュー１５１に格納されたメッセージＭを処理する動作は、プログラムキューＰＱを割当する動作、エンティティーポインターＥＰを割当する動作、プログラムエンティティーＰＥを割当する動作、予め割当されたプログラムエンティティーＰＥにメッセージを追加する動作、エンティティーポインターＰＥのカウントを管理する動作、エンティティーポインターＰＥをプログラムキューＰＱにエンキューする動作の中で少なくとも１つを包含することができる。
【０２４５】
第２プロセッサー１４０はメモリコントローラＭＣに属する他の装置の動作状態に関わらず、プログラムキューＰＱに登録されたエンティティーポインターＥＰを順次的に処理することができる。第２プロセッサー１４０はプログラムキューＰＱに登録されたエンティティーポインターＥＰに基づいて、図４に図示された状態図にしたがって動作することができる。図４の状態図を参照して説明された条件が充足されれば、第２プロセッサー１４０はメモリコントローラＭＣに属する他の装置の動作状態に関わらず、次の状態に進入しエンティティーポインターＥＰにしたがう動作を遂行することができる。エンティティーポインターＥＰにしたがう動作はプログラムエンティティーＰＥをコマンドキュー１８１にエンキューする動作を包含することができる。
【０２４６】
メモリマネージャー１８０はメモリコントローラＭＣに属する他の装置の動作状態に関わらず、コマンドキュー１８１に登録されたコマンドＣを順次的に処理することができる。メモリマネージャー１８０はコマンドキュー１８１に登録された順に、コマンドキュー１８１に格納されたコマンドＣを順次的に処理することができる。メモリマネージャー１８０がコマンドＣを処理する動作は、コマンドＣに応答してバッファ領域１７１に格納されたページデータを不揮発性メモリ１９０に伝送する動作又は不揮発性メモリ１９０にプログラムコマンドを伝送する動作を包含することができる。
【０２４７】
図４２は不揮発性メモリ１９０で１−ステッププログラム、粗いプログラム、及び精巧なプログラムが遂行される時、メモリセルの閾値電圧の変化を示すグラフである。図４２で、横軸はメモリセルの閾値電圧を示し、縦軸はメモリセルの個数を示す。即ち、図４２はメモリセルの閾値電圧散布を示す。
【０２４８】
図１８及び図４２の参照番号２１を参照すれば、第１ワードラインＷＬ＿０１で１−ステッププログラムが遂行される。１−ステッププログラムが遂行されれば、最下位ページデータＰＤ１と中間ページデータＰＤ２にしたがって第１ワードラインＷＬ＿０１に連結されたメモリセルがプログラムされる。メモリセルは消去状態（ｅｒａｓｅｄ）及び中間プログラム状態Ｑ１、Ｑ２、Ｑ３にプログラムされることができる。
【０２４９】
図２５及び図４２の参照番号２２を参照すれば、第２ワードラインＷＬ＿０２で１−ステッププログラムが遂行される。この時、第１ワードラインＷＬ＿０１に連結されたメモリセルの閾値電圧散布はカップリングの影響によって広くなり得る。
【０２５０】
図２８及び図４２の参照番号２３を参照すれば、第１ワードラインＷＬ＿０１で粗いプログラムが遂行される。粗いプログラムが遂行されれば、最下位ページデータＰＤ１、中間ページデータＰＤ２、及び最上位ページデータＰＤ３に基づいて、第１ワードラインＷＬ＿０１に連結されたメモリセルがプログラムされる。メモリセルは消去状態及び中間プログラム状態Ｐ１’、Ｐ２’、Ｐ３’、Ｐ４’、Ｐ５’、Ｐ６’、Ｐ７’にプログラムされることができる。
【０２５１】
図３７及び図４２の参照番号２４を参照すれば、第２ワードラインＷＬ＿０２で粗いプログラムが遂行される。第２ワードラインＷＬ＿０２で粗いプログラムが遂行される時、第１ワードラインＷＬ＿０１に連結されたメモリセルの閾値電圧散布はカップリングの影響によって広くなり得る。
【０２５２】
図４０及び図４２の参照番号２５を参照すれば、第１ワードラインＷＬ＿０１で精巧なプログラムが遂行される。精巧なプログラムが遂行されれば、最下位ページデータＰＤ１、中間ページデータＰＤ２、及び最上位ページデータＰＤ３に基づいて、第１ワードラインＷＬ＿０１に連結されたメモリセルがプログラムされる。メモリセルは消去状態及びプログラム状態Ｐ１、Ｐ２、Ｐ３、Ｐ４、Ｐ５、Ｐ６、Ｐ７にプログラムされることができる。
【０２５３】
図４２の参照番号２６を参照すれば、第２ワードラインＷＬ＿０２で精巧なプログラムが遂行される時、第１ワードラインＷＬ＿０１に連結されたメモリセルの閾値電圧散布はカップリングの影響によって広くなり得る。
【０２５４】
図４２に示したように、ダイレクトリプログラムは１−ステッププログラム、粗いプログラム及び精巧なプログラムの順序に遂行される。１−ステッププログラム、粗いプログラム及び精巧なプログラムは隣接するワードラインから伝達されるカップリングを考慮して、漸進的に向上される精密度を有することができる。１−ステッププログラム、粗いプログラム及び精巧なプログラムは不揮発性メモリ１９０に格納されたデータではない、バッファメモリ１７０に格納されたデータに基づいて、遂行される。したがって、１−ステッププログラム、粗いプログラム及び精巧なプログラムが順次的に遂行される時、隣接するワードラインからのカップリングが累積されることが防止される。
【０２５５】
例示的に、不揮発性メモリ１９０の１つのワードラインは３つのプログラムアドレス及び３つの読出しアドレスを有することができる。３つのプログラムアドレスは各々１−ステッププログラム、粗いプログラム、及び精巧なプログラムに対応することができる。プログラムの時に、メモリマネージャー１８０は３つのプログラムアドレスの中で１つと１つのプログラムコマンドを不揮発性メモリ１９０に伝送することができる。読出しの時に、メモリマネージャー１８０は３つの読出しアドレスの中で１つと読出しコマンドを不揮発性メモリ１９０に伝送することができる。３つの読出しアドレスは各々最下位ページ、中間ページ、及び最上位ページに対応することができる。
【０２５６】
例示的に、不揮発性メモリ１９０の１つのワードラインは１つのプログラムアドレス及び３つの読出しアドレスを有することができる。プログラムの時に、メモリマネージャー１８０は１つのプログラムアドレス及び１−ステッププログラム、粗いプログラム、又は精巧なプログラムを示すプログラムコマンドを不揮発性メモリ１９０に伝送することができる。読出しの時に、メモリマネージャー１８０は３つの読出しアドレスの中で１つと読出しコマンドを不揮発性メモリ１９０に伝送することができる。３つの読出しアドレスは各々最下位ページ、中間ページ、及び最上位ページに対応することができる。
【０２５７】
図４３は本発明の実施形態によるメモリコントローラＭＣの動作方法の第４例を示す順序図である。例示的に、ステートマシン１４１が特定な状態で以前状態に復帰するロールバック（ｒｏｌｌｂａｃｋ）動作が図４３に図示される。
【０２５８】
図４３を参照すれば、Ｓ４１０段階で、ロールバックが必要であるか否かが判別される。例えば、コマンドキュー１８１にエンキューされたが、不揮発性メモリ１９０に未だプログラムされないコマンドの取消しが要求される時、ロールバックが必要であることと判別され得る。例えば、コマンドキュー１８１に複数のコマンドがエンキューされた状態で、プログラムキューＰＱに対応するメモリブロックに対する読出し要請が発生することができる。コマンドキュー１８１にエンキューされたコマンドにしたがうプログラムが中止され、要請された読出しが遂行されることができる。要請された読出しがフェイルされれば、メモリブロックのプログラム又は読出し電圧条件を調節する動作が遂行されることができる。この時、イッシューされたプログラムの取消しが必要であることと判別され得る。
【０２５９】
Ｓ４２０段階で、ステートマシン１４１の状態が以前の目標状態にプログラム戻される。
【０２６０】
Ｓ４３０段階で、ステートマシン１４１の状態の戻されることにしたがって、プログラムキューＰＱのエンティティーポインターが戻された状態に合わせるように調節される。
【０２６１】
例示的に、ロールバックはコマンドキュー１８１に格納された各コマンドに対して順次的に遂行されることができる。第２プロセッサー１４０はコマンドキュー１８１にエンキューされた最後のコマンドが不揮発性メモリ１９０にイッシューされたか否か判別することができる。例えば、第２プロセッサー１４０はメモリマネージャー１８０から最後のコマンドがイッシューされたことを知らせるインタラプトが受信されたか否かを判別し、判別結果にしたがって最後のコマンドが不揮発性メモリ１９０にイッシューされたか否か判別することができる。最後のコマンドが不揮発性メモリ１９０にイッシューされたら、ロールバックは遂行されない。
【０２６２】
最後のコマンドが不揮発性メモリ１９０にイッシューされなかったら、最後のコマンドがコマンドキュー１８１からリリースされることができる。ステートマシン１４１は現状態の直前の状態にロールバックされ得る。プログラムキューＰＱまた現状態の直前の状態に調節され得る。リリースされたコマンドはメッセージキュー１５１に復元され得る。以後に、コマンドキュー１８１にエンキューされた最後のコマンドに対して同一の動作が反復的に遂行されることができる。
【０２６３】
図４及び表１にしたがって、１−ステッププログラムがコマンドキュー１８１にイッシューされた後、そして１−ステッププログラムが不揮発性メモリ１９０にイッシューされる前に、ステートマシン１４１で遂行されるコールバックの例が表２に記載される。例示的に、１つのコマンドが取消される例が表２に図示される。
【０２６４】
【表２】
2014182792.tif 000004
【０２６５】
図４及び表１にしたがって、粗いプログラムがコマンドキュー１８１にイッシューされた後、そして粗いプログラムが不揮発性メモリ１９０にイッシューされる前に、ステートマシン１４１で遂行されるコールバックの例が表３に記載される。例示的に、１つのコマンドが取消される例が表３に図示される。
【０２６６】
【表３】
2014182792.tif 000005
【０２６７】
図４及び表１にしたがって、精巧なプログラムがコマンドキュー１８１にイッシューされた後、そして精巧なプログラムが不揮発性メモリ１９０にイッシューされる前に、ステートマシン１４１で遂行されるコールバックの例が表４に記載される。例示的に、１つのコマンドが取消される例が表４に図示される。
【０２６８】
【表４】
2014182792.tif 000006
【０２６９】
図４４は本発明の実施形態によるメモリコントローラＭＣの動作方法の第５例を示す順序図である。例示的に、メモリコントローラＭＣがエンティティーポインターＥＰをリリースする第１例が図４４に図示される。
【０２７０】
図４１及び図４４を参照すれば、Ｓ５１０段階で、予め定まれた数のエンティティーポインターがプログラムキューＰＱの追加ステージＱＣに蓄積されたか否かを判別される。予め定まれた数のエンティティーポインターが追加ステージＱＣに蓄積されなかったら、別の動作は遂行されない。予め定まれた数のエンティティーポインターが追加ステージＱＣに蓄積されていれば、Ｓ５２０段階が遂行される。予め定まれた数は２又はその以上の数であり得る。
【０２７１】
Ｓ５２０段階で、追加ステージＱＣに最初にエンキューされたエンティティーポインターがリリースされる。リリースされるエンティティーポインターと連関されたプログラムエンティティー及びページデータが共にリリースされることができる。
【０２７２】
図４２の参照番号２５及び２６を参照して説明されたように、特定なワードラインで精巧なプログラムが遂行され、特定なワードラインの次のワードラインで精巧なプログラムが遂行された後に、特定なワードラインの閾値電圧が最終的に安定化されることができる。追加ステージＱＣは特定なワードラインのエンティティーポインターを次のワードラインの精巧なプログラムが遂行される時まで維持することができる。
【０２７３】
特定なワードラインのエンティティーポインターが追加ステージＱＣに維持されれば、第１プロセッサー１２０は特定なワードラインのプログラムが完了されないことと認識できる。したがって、外部装置から特定なワードラインにプログラムされたデータに対する読出し要請が受信される時、第１プロセッサー１２０はバッファメモリ１７０に格納されたデータを出力することができる。
【０２７４】
特定なワードラインのエンティティーポインターが追加ステージＱＣからリリースされれば、第２プロセッサー１４０はエンティティーポインター及びプログラムエンティティーに含まれた情報に基づいて、第１プロセッサー１２０にプログラムが完了されたことを知らせる信号を伝送することができる。以後に、外部装置から特定なワードラインにプログラムされたデータに対する読出し要請が受信されれば、第１プロセッサー１２０は第２プロセッサー１４０に読出し要請を伝達することができる。第２プロセッサー１４０は特定なワードラインにプログラムされたデータを読み出し、読み出されたデータをホストプロセッサー１２０及びホストインターフェイス１２５を通じて外部装置に出力することができる。
【０２７５】
即ち、追加ステージＱＣが提供されれば、特定なワードラインのメモリセルの閾値電圧が安定化された後に、特定なワードラインのメモリセルに対する読出しが遂行されることができる。したがって、メモリシステム１００の信頼性が向上される。
【０２７６】
例示的に、メモリブロックの最後のワードラインＷＬｋに対応するエンティティーポインターは追加ステージＱＣにエンキューされないことがあり得る。
【０２７７】
図４５は図４１の状態からエンティティーポインターＰＥ１がリリースされた例を示す。図４１と比較すれば、追加ステージＱＣからエンティティーポインターＥＰ１がリリースされる。また、エンティティーポインターＥＰ１に対応するページデータＰＤ１、ＰＤ２、ＰＤ３とプログラムエンティティーＰＥ１がリリースされる。リリースされたデータが格納された格納領域は無効化され、上書きが可能である格納領域に識別され得る。
【０２７８】
図４６は本発明の実施形態によるメモリコントローラＭＣの動作方法の第６例を示す順序図である。例示的に、バッファメモリ１７０に格納されたページデータに対して更新が要請された時のメモリコントローラＭＣの動作方法が図４８に図示される。
【０２７９】
図４１及び図４６を参照すれば、Ｓ６１０段階で、バッファメモリ１７０のバッファ領域１７１に格納されたページデータの更新データが受信される。例示的に、外部装置（例えば、ホスト）からデータと共に受信されるアドレス（例えば、論理アドレス）がバッファメモリ１７０に格納されたデータのアドレス（例えば、論理アドレス）と重複されれば、外部装置から受信されたデータは更新データに識別され得る。
【０２８０】
Ｓ６２０段階で、更新データがページデータの部分データであるか否かが判別される。例えば、更新データがバッファメモリ１７０に格納された１つのページデータの部分データであるか否かを判別され得る。更新データが部分データではなければ、Ｓ６３０段階で、更新データがバッファメモリ１７０の空いたバッファスロットに格納される。更新データが部分データであれば、Ｓ６４０段階が遂行される。
【０２８１】
Ｓ６４０段階で、更新データがページデータと組合されて新しいページデータが生成される。新しいページデータはバッファメモリ１７０の空いたバッファスロットに格納される。例えば、更新データ及びバッファメモリ１７０に格納された原本データの中で更新データに対応しない残るデータが組合されて新しいページデータを形成することができる。
【０２８２】
図４７は図４６の方法によって更新データがバッファメモリ１７０に格納される例を示す。図４７を参照すれば、第１ケースは更新データが１つのページデータＰＤｉ＋３である場合を示す。更新データが１つのページデータＰＤｉ＋３である場合、更新データはバッファメモリ１７０の１つのスロットに格納され得る。
【０２８３】
第２ケースは更新データが１つのページデータの部分データである場合を示す。更新データは新しいページデータＰＤｉ＋３の第１部分Ｐ１を形成することができる。原本ページデータの中で更新データに対応しない部分が複写されて新しいページデータＰＤｉ＋３の第２部分Ｐ２を形成することができる。
【０２８４】
図４８は本発明の第２実施形態によるメモリシステム１００ａを示すブロック図である。図４８を参照すれば、メモリシステム１００ａはバス１１０、第１プロセッサー１２０、第１メモリ１３０、第２プロセッサー１４０、第２メモリ１５０、バッファマネージャー１６０、バッファメモリ１７０、メモリマネージャー１８０ａ、及び複数の不揮発性メモリ１９０ａ＿１〜１９０ａ＿ｍを含む。
【０２８５】
メモリマネージャー１８０ａは複数のチャンネルＣＨ１〜ＣＨｍを通じて複数の不揮発性メモリ１９０ａ＿１〜１９０ａ＿ｍと各々通信できる。複数のチャンネルＣＨ１〜ＣＨｍは互いに独立的に動作することができる。１つのチャンネルに複数の不揮発性メモリが結合され得る。
【０２８６】
メモリマネージャー１８０ａは複数のチャンネルＣＨ１〜ＣＨｍに各々対応する複数のコマンドキューＣＱ１〜ＣＱｍを包含することができる。複数のコマンドキューＣＱ１〜ＣＱｍは複数のチャンネルＣＨ１〜ＣＨｍに各々対応するコマンドを格納することができる。
【０２８７】
図４９は本発明の実施形態によるソリッドステートドライブ（ＳＳＤ：Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）１０００を示す。図４９を参照すれば、ソリッドステートドライブ１０００はコントローラ１１００、複数の不揮発性メモリ１２００、及びコネクター１３００を含む。
【０２８８】
メモリコントローラ１１００は図１又は図４８を参照して説明されたメモリコントローラＭＣを包含することができる。メモリコントローラ１１００はプログラムキューＰＱに基づいて、不揮発性メモリ１２００のダイレクトリプログラムを制御することができる。
【０２８９】
複数の不揮発性メモリ１２００はフラッシュメモリ、ＰＲＡＭ（Ｐｈａｓｅ−ｃｈａｎｇｅ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）、ＲＲＡＭ（登録商標）（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、ＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）等を包含することができる。コネクター１３００はソリッドステートドライブ１０００と外部装置（例えば、ホスト）を電気的に連結することができる。
【０２９０】
図５０は本発明の実施形態によるコンピューティング装置２０００を示すブロック図である。図５０を参照すれば、コンピューティング装置２０００はプロセッサー２１００、メモリ２２００、ストレージ２３００、モデム２４００、及び使用者インターフェイス２５００を含む。
【０２９１】
プロセッサー２１００はコンピューティング装置２０００の諸般動作を制御し、論理演算を遂行することができる。例えば、プロセッサー２１００はシステム−オン−チップ（ＳｏＣ、Ｓｙｓｔｅｍ−ｏｎ−Ｃｈｉｐ）で構成されることができる。プロセッサー２１００は汎用プロセッサー又はアプリケーションプロセッサーを包含することができる。
【０２９２】
メモリ２２００はプロセッサー２１００と通信できる。メモリ２２００はプロセッサー２１００又はコンピューティング装置２０００の動作メモリ（又はメーンメモリ）であり得る。メモリ２２００はＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）等のような揮発性メモリ、又はフラッシュメモリ、ＰＲＡＭ（Ｐｈａｓｅ−ｃｈａｎｇｅ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）、ＲＲＡＭ（登録商標）（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、ＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）等のような不揮発性メモリを包含することができる。
【０２９３】
ストレージ２３００はコンピューティング装置２０００で長期的に格納しようとするデータを格納することができる。ストレージ２３００はハードディスクドライブ（ＨＤＤ、Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）又はフラッシュメモリ、ＰＲＡＭ（Ｐｈａｓｅ−ｃｈａｎｇｅ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）、ＲＲＡＭ（登録商標）（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、ＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）等のような不揮発性メモリを包含することができる。
【０２９４】
ストレージ２３００は図１乃至図４８を参照して説明されたメモリシステム１００又は１００ａを包含することができる。ストレージ２３００はプログラムキューＰＱに基づいて、ダイレクトリプログラムを遂行することができる。ストレージ２３００は図４９を参照して説明されたソリッドステートドライブ１０００を包含することができる。
【０２９５】
モデム２４００はプロセッサー２１００の制御にしたがって外部装置と通信を遂行することができる。例えば、モデム２４００は外部装置と有線又は無線通信を遂行することができる。モデム２４００はＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）、ＷｉＭａｘ、ＧＳＭ（登録商標）（Ｇｌｏｂａｌ  Ｓｙｓｔｅｍ  ｆｏｒ  Ｍｏｂｉｌｅ  ｃｏｍｍｕｎｉｃａｔｉｏｎ）、ＣＤＭＡ（Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ）、ブルートゥース（Ｂｌｕｅｔｏｏｔｈ（登録商標））、ＮＦＣ（Ｎｅａｒ  Ｆｉｅｌｄ  Ｃｏｍｍｕｎｉｃａｔｉｏｎ）、ＷｉＦｉ、ＲＦＩＤ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ  ＩＤｅｎｔｉｆｉｃａｔｉｏｎ）等のような多様な無線通信方式、又はＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＳＡＴＡ（Ｓｅｒｉａｌ  ＡＴ  Ａｔｔａｃｈｍｅｎｔ）、ＳＣＳＩ（Ｓｍａｌｌ  Ｃｏｍｐｕｔｅｒ  Ｓｍａｌｌ  Ｉｎｔｅｒｆａｃｅ）、ファイアーワイヤ（Ｆｉｒｅｗｉｒｅ）、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）等のような多様な有線通信方式の中で少なくとも１つに基づいて、通信を遂行することができる。
【０２９６】
使用者インターフェイス２５００はプロセッサー２１００の制御にしたがって使用者と通信できる。例えば、使用者インターフェイス２５００はキーボード、キーパッド、ボタン、タッチパネル、タッチスクリーン、タッチパッド、タッチボール、カメラ、マイク、ジャイロスコープセンサー、振動センサー、等のような使用者入力インターフェイスを包含することができる。使用者インターフェイス２５００はＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）、ＯＬＥＤ（Ｏｒｇａｎｉｃ  Ｌｉｇｈｔ  Ｅｍｉｔｔｉｎｇ  Ｄｉｏｄｅ）表示装置、ＡＭＯＬＥＤ（Ａｃｔｉｖｅ  Ｍａｔｒｉｘ  ＯＬＥＤ）表示装置、ＬＥＤ、スピーカー、モーター等のような使用者出力インターフェイスを包含することができる。
【０２９７】
本発明の詳細な説明では具体的な実施形態に関して説明したが、本発明の範囲と技術的思想から逸脱しない限度内で様々な変形が可能である。したがって、本発明の範囲は上述した実施形態に限定されて定まれてはならないし、後述する特許請求の範囲のみでなく、この発明の特許請求の範囲と均等なものによって定まれる。
【符号の説明】
【０２９８】
１００、１００ａ、１００ｂ、１００ｃ、１００ｄ  メモリシステム
１１０  バス
１２０  第１プロセッサー
１３０  第１メモリ
１４０  第２プロセッサー
１５０  第２メモリ
１６０  バッファマネージャー
１７０  バッファメモリ
１８０、１８０ａ、１８０ｂ、１８０ｃ＿１〜１８０ｃ＿ｍ、１８０ｄ＿１〜１８０ｄ＿ｍ  メモリマネージャー
１９０、１９０ａ＿１〜１９０ａ＿ｍ、１９０ｂ＿１〜１９０ｂ＿ｍ、１９０ｃ＿１〜１９０ｃ＿ｍ、１９０ｄ＿１〜１９０ｄ＿ｍ  不揮発性メモリ
【図１】
2014182792.tif 000007
【図２】
2014182792.tif 000008
【図３】
2014182792.tif 000009
【図４】
2014182792.tif 000010
【図５】
2014182792.tif 000011
【図６】
2014182792.tif 000012
【図７】
2014182792.tif 000013
【図８】
2014182792.tif 000014
【図９】
2014182792.tif 000015
【図１０】
2014182792.tif 000016
【図１１】
2014182792.tif 000017
【図１２】
2014182792.tif 000018
【図１３】
2014182792.tif 000019
【図１４】
2014182792.tif 000020
【図１５】
2014182792.tif 000021
【図１６】
2014182792.tif 000022
【図１７】
2014182792.tif 000023
【図１８】
2014182792.tif 000024
【図１９】
2014182792.tif 000025
【図２０】
2014182792.tif 000026
【図２１】
2014182792.tif 000027
【図２２】
2014182792.tif 000028
【図２３】
2014182792.tif 000029
【図２４】
2014182792.tif 000030
【図２５】
2014182792.tif 000031
【図２６】
2014182792.tif 000032
【図２７】
2014182792.tif 000033
【図２８】
2014182792.tif 000034
【図２９】
2014182792.tif 000035
【図３０】
2014182792.tif 000036
【図３１】
2014182792.tif 000037
【図３２】
2014182792.tif 000038
【図３３】
2014182792.tif 000039
【図３４】
2014182792.tif 000040
【図３５】
2014182792.tif 000041
【図３６】
2014182792.tif 000042
【図３７】
2014182792.tif 000043
【図３８】
2014182792.tif 000044
【図３９】
2014182792.tif 000045
【図４０】
2014182792.tif 000046
【図４１】
2014182792.tif 000047
【図４３】
2014182792.tif 000048
【図４４】
2014182792.tif 000049
【図４５】
2014182792.tif 000050
【図４６】
2014182792.tif 000051
【図４７】
2014182792.tif 000052
【図４８】
2014182792.tif 000053
【図４９】
2014182792.tif 000054
【図５０】
2014182792.tif 000055
【図４２】
2014182792.tif 000056