(57)【要約】【課題】消費電力の減少した不揮発性メモリ及びコントローラを含むメモリシステム、そしてプログラム方法を提供する。【解決手段】本発明のプログラム方法は、プログラムデータを受信する段階と、メモリセルに格納されたデータを読み出す段階と、プログラムデータ及び読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いてプログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階と、エンコーディングされたデータ及びフラグデータをメモリセルにプログラムする段階で構成される。【選択図】      図１４
2014086127.tif 000002
【特許請求の範囲】
【請求項１】
メモリにデータをプログラムするプログラム方法において、
プログラムデータを受信する段階と、
前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、
前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階と、
前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
【請求項２】
前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、
前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階と、
前記予測の結果によって前記複数のエンコーディングスキームのうちの少なくとも一つのエンコーディングスキームを選択する段階とを含むことを特徴とする請求項１に記載のプログラム方法。
【請求項３】
前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階は、
前記読み出されたデータとプログラムデータとの間の同じビット及び変換ビットを各々カウントする段階を含むことを特徴とする請求項２に記載のプログラム方法。
【請求項４】
前記複数のエンコーディングスキームは、循環シフトエンコーディングスキームと反転エンコーディングスキームとを含み、
前記予測の結果によって、少なくとも一つのエンコーディングスキームを選択する段階と、前記プログラムデータをエンコーディングする段階とは、
前記変換ビット数と同じビット数の差が閾値より小さい場合、前記循環シフトエンコーディングスキームを選択して、プログラムデータをシフトし、前記差が前記閾値以上の場合、前記反転エンコーディングスキームを選択して、前記プログラムデータを反転させる段階を含むことを特徴とする請求項３に記載のプログラム方法。
【請求項５】
前記エンコーディングされたデータと前記読み出されたデータとの間の距離が閾値より小さい場合、前記エンコーディング情報を含むフラグデータを生成し、前記エンコーディングされたデータと前記読み出されたデータとの間の距離が前記閾値以上である場合、前記予測の結果によって前記複数のエンコーディングスキームのうち、他のエンコーディングスキームを選択し、前記選択された他のエンコーディングスキームを用いて前記プログラムデータをエンコーディングし、前記フラグデータを生成する段階をさらに含むことを特徴とする請求項２に記載のプログラム方法。
【請求項６】
前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、
前記複数のエンコーディングスキームを順に選択し、選択されたエンコーディングスキームを用いて、前記プログラムデータをエンコーディングして候補データを生成する段階と、
前記プログラムデータ及び候補データを前記読み出されたデータと各々比較する段階と、
前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択する段階と、
前記エンコーディング情報を含むフラグデータを生成する段階とを含むことを特徴とする請求項１に記載のプログラム方法。
【請求項７】
前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、
複数のエンコーディングスキームを選択し、前記選択された複数のエンコーディングスキームを組み合わせ、前記プログラムデータをエンコーディングし、前記エンコーディング情報を含むフラグデータを生成する段階を含むことを特徴とする請求項１に記載のプログラム方法。
【請求項８】
前記エンコーディング情報は、前記プログラムデータ及び前記少なくとも一つのエンコーディングスキームによって生成される候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むことを特徴とする請求項１に記載のプログラム方法。
【請求項９】
前記複数のエンコーディングスキームは、
前記プログラムデータを循環シフトして候補データを生成する循環シフトエンコーディングスキームを含み、
前記フラグデータは、前記エンコーディングされたデータが、前記プログラムデータから循環シフトされたビット数に対する情報を含むことを特徴とする請求項１に記載のプログラム方法。
【請求項１０】
前記複数のエンコーディングスキームは、
前記プログラムデータの一番目のビットと同一の一番目のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する差分エンコーディングスキームを含み、
前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むことを特徴とする請求項１に記載のプログラム方法。
【請求項１１】
前記複数のエンコーディングのスキームは、
予め設定されたデータと前記プログラムデータの論理演算を実行して、候補データを生成するバイナリマスクエンコーディングスキームを含み、
前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むことを特徴とする請求項１に記載のプログラム方法。
【請求項１２】
前記複数のエンコーディングスキームは、
前記プログラムデータを反転して候補データを生成するビット反転エンコーディングスキームを含み、
前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むことを特徴とする請求項１に記載のプログラム方法。
【請求項１３】
前記プログラムデータは、複数のサブデータに分割され、前記複数のサブデータの各々に対して、前記少なくとも一つのエンコーディングスキームが選択されることを特徴とする請求項１に記載のプログラム方法。
【請求項１４】
メモリにデータをプログラムするプログラム方法において、
プログラムデータを受信する段階と、
前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、
前記プログラムデータ及び読み出されたデータを複数のプログラムデータのグループ及び複数の読み出されたデータのグループに各々分割する段階と、
前記複数のプログラムデータのグループの各々に対して、前記複数の読み出されたデータのグループのうち対応するグループに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いてエンコーディングを実行し、エンコーディング結果を組み合わせて、エンコーディングされたデータを生成する段階と、
各プログラムデータのグループのエンコーディング情報を含むフラグデータを生成する段階と、
前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
【請求項１５】
メモリにデータをプログラムするプログラム方法において、
プログラムデータを受信する段階と、
前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、
前記プログラムデータを候補データとして選択する段階と、
前記候補データと前記読み出されたデータとを比較する段階と、
前記比較の結果によって、前記候補データと前記読み出されたデータとの間の距離が基準値未満であれば、前記候補データをエンコーディングされたデータとして選択し、前記候補データと前記読み出されたデータとの間の距離が前記基準値以上であれば、前記候補データを循環シフトして、他の候補データを生成して前記比較する段階と、前記比較の結果によってエンコーディングされたデータを選択するか、又は他の候補データを選択する段階を再び実行する段階と、
前記エンコーディングされたデータが、前記プログラムデータからシフトされたビット数に対する情報を含むフラグデータを生成する段階と、
前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
【請求項１６】
前記エンコーディングされたデータが選択されず、前記再び実行する段階が予め決められた回数だけ実行されれば、前記プログラムデータ及び前記循環シフトによって生成された候補データのうち、前記読み出されたデータと最も距離が近いデータが前記エンコーディングされたデータとして選択されることを特徴とする請求項１５に記載のプログラム方法。
【請求項１７】
メモリと、
前記メモリを制御するように構成されるコントローラとを含み、
前記コントローラは、
ランダムアクセスメモリと、
外部からプログラムデータを受信して前記ランダムアクセスメモリに格納するように構成されるホストインターフェースと、
前記メモリから読み出されたデータを受信し、前記ランダムアクセスメモリに格納するように構成されるメモリインターフェースと、
前記ランダムアクセスメモリに格納された前記読み出されたデータに基づいて、前記ランダムアクセスメモリに格納された前記プログラムデータをエンコーディングし、エンコーディングされたデータを、前記ランダムアクセスメモリに格納するように構成されるデータエンコーディング部と、
前記ランダムアクセスメモリに格納された前記エンコーディングされたデータを前記メモリにプログラムするように前記メモリインターフェースを制御するプロセッサとを含み、
前記データエンコーディング部は、前記読み出されたデータ及び前記プログラムデータの比較の結果によって前記エンコーディングされたデータを生成するようにさらに構成されることを特徴とするメモリシステム。
【請求項１８】
前記データエンコーディング部は、複数のエンコーディングのスキームのうちで少なくとも一つのエンコーディングスキームを選択し、前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングするようにさらに構成されることを特徴とする請求項１７に記載のメモリシステム。
【請求項１９】
前記データエンコーディング部は、前記プログラムデータを循環シフトエンコーディングして候補データを生成し、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択するようにさらに構成されることを特徴とする請求項１７に記載のメモリシステム。
【請求項２０】
前記メモリは、磁気ＲＡＭ又は相変化ＲＡＭを含むことを特徴とする請求項１７に記載のメモリシステム。
【請求項２１】
メモリにデータをプログラムするプログラム方法において、
プログラムデータを受信する段階と、
前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、
前記プログラムデータの一番目のビットと同一のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する段階と、
前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、
前記プログラムデータ及び候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、
前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
【請求項２２】
メモリにデータをプログラムするプログラム方法において、
プログラムデータを受信する段階と、
前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、
予め設定されたデータと前記プログラムデータの論理演算を実行して、候補データを生成する段階と、
前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、
前記プログラムデータ及び候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、
前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
【請求項２３】
メモリにデータをプログラムするプログラム方法において、
プログラムデータを受信する段階と、
前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、
前記受信されたプログラムデータを、第１及び第２部分に分割する段階と、
前記受信されたプログラムデータの第１部分を反転して、第１候補データを生成する段階と、
前記受信されたプログラムデータの第２部分を反転して、第２候補データを生成する段階と、
前記プログラムデータと、第１及び第２候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、
前記プログラムデータと、第１及び第２候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、
前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含むことを特徴とするプログラム方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体メモリに係り、より詳細には、不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法に関する。
【背景技術】
【０００２】
半導体メモリ装置（ｓｅｍｉｃｏｎｄｕｃｔｏｒ  ｍｅｍｏｒｙ  ｄｅｖｉｃｅ）は、シリコン（Ｓｉ、ｓｉｌｉｃｏｎ）、ゲルマニウム（Ｇｅ、Ｇｅｒｍａｎｉｕｍ）、ガリウムヒ素（ＧａＡｓ、ｇａｌｌｉｕｍ  ａｒｓｅｎｉｄｅ）、インジウム燐（ＩｎＰ、ｉｎｄｉｕｍ  ｐｈｏｓｐｈｉｄｅ）などのような半導体を用いて実現される記憶装置である。半導体メモリ装置は、大きく揮発性メモリ装置（Ｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｄｅｖｉｃｅ）と不揮発性メモリ装置（Ｎｏｎｖｏｌａｔｉｌｅ  ｍｅｍｏｒｙ  ｄｅｖｉｃｅ）とに区分される。
【０００３】
揮発性メモリ装置は、電源の供給が遮断されれば、格納していたデータが消滅するメモリ装置である。揮発性メモリ装置は、ＳＲＡＭ（Ｓｔａｔｉｃ  ＲＡＭ）、ＤＲＡＭ（Ｄｙｎａｍｉｃ  ＲＡＭ）、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）などがある。不揮発性メモリ装置は、電源の供給が遮断されても格納していたデータを保持するメモリ装置である。不揮発性メモリ装置は、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＥＰＲＯＭ（Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  ａｎｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、フラッシュメモリ装置、ＰＲＡＭ（Ｐｈａｓｅ−ｃｈａｎｇｅ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）、ＲＲＡＭ（登録商標）（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、ＦＲＡＭ（登録商標）（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）などがある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７９２０４１３号公報
【特許文献２】米国特許第６８６２２３５号公報
【特許文献３】韓国特許出願公開２００９−００３４５７２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明の目的は、消費電力の減少した不揮発性メモリ及びコントローラを含むメモリシステム、そして不揮発性メモリにデータをプログラムするプログラム方法を提供することにある。
【課題を解決するための手段】
【０００６】
メモリにデータをプログラムする本発明の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
【０００７】
実施形態として、前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階と、前記予測の結果によって前記複数のエンコーディングスキームのうちの少なくとも一つのエンコーディングスキームを選択する段階とを含む。
実施形態として、前記複数のエンコーディングスキームの各々のエンコーディング結果を予測する段階は、前記読み出されたデータとプログラムデータとの間の同一のビット及び変換ビットを各々カウントする段階を含む。
【０００８】
実施形態として、前記複数のエンコーディングスキームは、循環シフトエンコーディングスキームと反転エンコーディングスキームとを含み、前記予測の結果によって、少なくとも一つのエンコーディングスキームを選択する段階と、前記プログラムデータをエンコーディングする段階とは、前記変換ビットの数と同一のビットの数の差が閾値より小さい場合、前記循環シフトエンコーディングスキームを選択して、プログラムデータをシフトし、前記差が前記閾値以上の場合、前記反転エンコーディングスキームを選択して、前記プログラムデータを反転する段階を含む。
【０００９】
実施形態として、前記エンコーディングされたデータと前記読み出されたデータとの間の距離が閾値より小さい場合、前記エンコーディング情報を含むフラグデータを生成し、前記エンコーディングされたデータと前記読み出されたデータとの間の距離が前記閾値以上の場合、前記予測の結果によって前記複数のエンコーディングスキームのうち、他のエンコーディングスキームを選択し、前記選択された他のエンコーディングスキームを用いて前記プログラムデータをエンコーディングし、前記フラグデータを生成する段階をさらに含む。
【００１０】
実施形態として、前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、前記複数のエンコーディングスキームを順に選択し、選択されたエンコーディングスキームを用いて、前記プログラムデータをエンコーディングして候補データを生成する段階と、前記プログラムデータ及び候補データを前記読み出されたデータと各々比較する段階と、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択する段階と、前記エンコーディング情報を含むフラグデータを生成する段階とを含む。
【００１１】
実施形態として、前記プログラムデータ及び前記読み出されたデータに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングし、エンコーディング情報を含むフラグデータを生成する段階は、複数のエンコーディングスキームを選択し、前記選択された複数のエンコーディングスキームを組み合わせて、前記プログラムデータをエンコーディングし、前記エンコーディング情報を含むフラグデータを生成する段階を含む。
【００１２】
実施形態として、前記エンコーディング情報は、前記プログラムデータ及び前記少なくとも一つのエンコーディングスキームによって生成される候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
実施形態として、前記複数のエンコーディングスキームは、前記プログラムデータを循環シフトして候補データを生成する循環シフトエンコーディングスキームを含み、前記フラグデータは、前記エンコーディングされたデータが、前記プログラムデータから循環シフトされたビット数に対する情報を含む。
【００１３】
実施形態として、前記複数のエンコーディングスキームは、前記プログラムデータの一番目のビットと同一の一番目のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する差分エンコーディングスキームを含み、前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
【００１４】
実施形態として、前記複数のエンコーディングスキームは、予め設定されたデータと前記プログラムデータの論理演算を実行して、候補データを生成するバイナリマスクエンコーディングスキームを含み、前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
【００１５】
実施形態として、前記複数のエンコーディングスキームは、前記プログラムデータを反転して候補データを生成するビット反転エンコーディングスキームを含み、前記フラグデータは、前記プログラムデータ及び前記候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含む。
実施形態として、前記プログラムデータは、複数のサブデータに分割され、前記複数のサブデータの各々について、前記少なくとも一つのエンコーディングスキームが選択される。
【００１６】
メモリにデータをプログラムする本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルに格納されたデータを読み出す段階と、前記プログラムデータ及び読み出されたデータを複数のプログラムデータのグループと複数の読み出されたデータのグループに各々分割する段階と、前記複数のプログラムデータのグループの各々に対して、前記複数の読み出されたデータのグループのうち対応するグループに基づいて、複数のエンコーディングスキームのうちで選択された少なくとも一つのエンコーディングスキームを用いてエンコーディングを実行し、エンコーディング結果を組み合わせて、エンコーディングされたデータを生成する段階と、各プログラムデータのグループのエンコーディング情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
【００１７】
メモリにデータをプログラムする本発明の別の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、前記プログラムデータを候補データとして選択する段階と、前記候補データと前記読み出されたデータとを比較する段階と、前記比較の結果によって、前記候補データと前記読み出されたデータとの間の距離が基準値未満であれば、前記候補データをエンコーディングされたデータとして選択し、前記候補データと前記読み出されたデータとの間の距離が前記基準値以上であれば、前記候補データを循環シフトして、他の候補データを生成して前記比較する段階と、前記比較の結果によってエンコーディングされたデータを選択するか、又は他の候補データを選択する段階を再び実行する段階と、前記エンコーディングされたデータが、前記プログラムデータからシフトされたビット数に対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
【００１８】
実施形態として、前記エンコーディングされたデータが選択されず、前記再び実行する段階が予め決められた回数だけ実行されれば、前記プログラムデータ及び前記循環シフトによって生成された候補データのうち、前記読み出されたデータと最も距離が近いデータが前記エンコーディングされたデータとして選択される。
【００１９】
本発明の実施形態に係るメモリシステムは、メモリと、前記メモリを制御するように構成されるコントローラとを含み、前記コントローラは、ランダムアクセスメモリと、外部からプログラムデータを受信して、前記ランダムアクセスメモリに格納するように構成されるホストインターフェースと、前記メモリから読み出されたデータを受信して、前記ランダムアクセスメモリに格納するように構成されるメモリインターフェースと、前記ランダムアクセスメモリに格納された前記読み出されたデータに基づいて、前記ランダムアクセスメモリに格納された前記プログラムデータをエンコーディングし、エンコーディングされたデータを前記ランダムアクセスメモリに格納するように構成されるデータエンコーディング部と、前記ランダムアクセスメモリに格納された前記エンコーディングされたデータを前記メモリにプログラムするように前記メモリインターフェースを制御するプロセッサとを含み、前記データエンコーディング部は、前記読み出されたデータ及び前記プログラムデータの比較結果によって前記エンコーディングされたデータを生成するようにさらに構成される。
【００２０】
実施形態として、前記データエンコーディング部は、複数のエンコーディングスキームのうちで少なくとも一つのエンコーディングスキームを選択し、前記選択された少なくとも一つのエンコーディングスキームを用いて、前記プログラムデータをエンコーディングするようにさらに構成される。
実施形態として、前記データエンコーディング部は、前記プログラムデータを循環シフトエンコーディングして候補データを生成し、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータを前記エンコーディングされたデータとして選択するようにさらに構成される。
実施形態として、前記メモリは、磁気ＲＡＭ（Ｍａｇｎｅｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）又は相変化メモリ（Ｐｈａｓｅｃｈａｎｇｅ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を含む。
【００２１】
本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、前記プログラムデータの一番目のビットと同一の一番目のビットを有し、前記プログラムデータのビットが遷移する位置にロジックハイ値を有し、前記プログラムデータのビットが遷移しない位置にロジックロー値を有する候補データを生成する段階と、前記プログラムデータ及び候補データのうち前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、前記プログラムデータ及び候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
【００２２】
本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、予め設定されたデータと前記プログラムデータの論理演算を実行して候補データを生成する段階と、前記プログラムデータ及び候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、前記プログラムデータと候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータ及び前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
【００２３】
本発明の他の実施形態に係るプログラム方法は、プログラムデータを受信する段階と、前記受信されたプログラムデータがプログラムされる前記メモリのメモリセルからデータを読み出す段階と、前記受信されたプログラムデータを、第１及び第２部分に分割する段階と、前記受信されたプログラムデータの第１部分を反転して、第１候補データを生成する段階と、前記受信されたプログラムデータの第２部分を反転して第２候補データを生成する段階と、前記プログラムデータと第１及び第２候補データのうち、前記読み出されたデータと最短距離を有するデータをエンコーディングされたデータとして選択する段階と、前記プログラムデータと、第１及び第２候補データのうち、前記エンコーディングされたデータとして選択されたデータに対する情報を含むフラグデータを生成する段階と、前記エンコーディングされたデータと前記フラグデータを前記メモリの前記メモリセルにプログラムする段階とを含む。
【発明の効果】
【００２４】
本発明の実施形態によると、プログラムデータは不揮発性メモリに格納されているデータと近い距離にあるデータにエンコーディングされてプログラムされる。プログラムの時にスイッチングされるビットの数が減少するので、不揮発性メモリの消費電力が低減するようになる。
【図面の簡単な説明】
【００２５】
【図１】本発明の第１実施形態に係るメモリシステムを示すブロック図。
【図２】本発明の実施形態に係る不揮発性メモリを示すブロック図。
【図３Ａ】本発明の実施形態に係るメモリセルアレイを示す回路図。
【図３Ｂ】本発明の実施形態に係るメモリセルアレイを示す回路図。
【図３Ｃ】本発明の実施形態に係るメモリセルアレイを示す回路図。
【図４】本発明の実施形態に係るコントローラを示すブロック図。
【図５】本発明の第１実施形態に係るプログラム方法を示すフローチャート。
【図６Ａ】本発明の第１実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。
【図６Ｂ】図６Ａのエンコーディング方法の応用例を示すフローチャート。
【図７Ａ】図６のエンコーディング方法を適用した例を示す図。
【図７Ｂ】図６のエンコーディング方法を適用した他の例を示す図。例示的に、最大ループが３である例を示す図。
【図７Ｃ】２ビットのフラグデータを用いて、図６のエンコーディング方法を適用したシミュレーション結果を示す図。
【図７Ｄ】４ビットのフラグデータを用いて、図６のエンコーディング方法を適用したシミュレーション結果を示す図。
【図８】本発明の第２実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。
【図９】図８のエンコーディング方法を適用した例を示す図。
【図１０】本発明の第３実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。
【図１１】図１０のエンコーディング方法を適用した例を示す図。
【図１２】本発明の第４実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。
【図１３Ａ】図１２のエンコーディング方法を適用した第１例を示す図。
【図１３Ｂ】図１２のエンコーディング方法の変形例を示す図。
【図１４】本発明の第２実施形態に係るプログラム方法を示すフローチャート。
【図１５】本発明の第１実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。
【図１６】候補データの読み出されたデータからの距離を予測し、予測の結果によってエンコーディングスキームを選択する一例を示すフローチャート。
【図１７】本発明の第２実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。
【図１８】本発明の一実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャート。
【図１９】本発明の一実施形態に係るプログラム方法を示すフローチャート。
【図２０】データエンコーディング及びデコーディング部がプログラムデータを分割してエンコーディングする例を示す図。
【図２１】本発明の第２実施形態に係るメモリシステムを示すブロック図。
【図２２】本発明の実施形態に係るコンピューティングシステムを示すブロック図。
【発明を実施するための形態】
【００２６】
以下、本発明が属する技術の分野における通常の知識を有する者が、本発明の技術的思想を容易に実施できる程度に詳細に説明するために、本発明の実施形態を添付の図面を参照して説明する。
図１は、本発明の第１実施形態に係るメモリシステム１０００を示すブロック図である。図１を参照すると、メモリシステム１０００は不揮発性メモリ１１００とコントローラ１２００とを含んでいる。
【００２７】
不揮発性メモリ１１００は、コントローラ１２００の制御によって動作するように構成される。不揮発性メモリ１１００は、コントローラ１２００から伝送される制御信号ＣＴＲＬ、コマンドＣＭＤ、アドレスＡＤＤＲ、データＤＡＴＡに応答して、プログラム、読み出し、消去を行うことができる。不揮発性メモリ１１００は不揮発性ランダムアクセスメモリを含むことができる。例えば、不揮発性メモリ１１００は、ＰＲＡＭ（Ｐｈａｓｅ−ｃｈａｎｇｅ  ＲＡＭ）、ＭＲＡＭ（Ｍａｇｎｅｔｉｃ  ＲＡＭ）、ＲＲＡＭ（Ｒｅｓｉｓｔｉｖｅ  ＲＡＭ）、ＦＲＡＭ（Ｆｅｒｒｏｅｌｅｃｔｒｉｃ  ＲＡＭ）などを含むことができる。不揮発性メモリ１１００は、ＮＡＮＤフラッシュメモリを含むことができる。
【００２８】
コントローラ１２００は不揮発性メモリ１１００を制御するように構成される。コントローラ１２００は、制御信号ＣＴＲＬ、コマンドＣＭＤ、アドレスＡＤＤＲ、データＤＡＴＡを不揮発性メモリ１１００に伝送するか、または不揮発性メモリ１１００と通信することができる。コントローラ１２００は、外部ホスト（Ｈｏｓｔ）の制御に応じて不揮発性メモリ１１００を制御することができる。
【００２９】
コントローラ１２００は、データエンコーディング及びデコーディング部１２６０を含んでいる。データエンコーディング及びデコーディング部１２６０は、ホスト（Ｈｏｓｔ）から伝送されるデータをエンコーディングするように構成される。エンコーディングされたデータは、不揮発性メモリ１１００にプログラムすることができる。データエンコーディング及びデコーディング部１２６０は不揮発性メモリ１１００から読み出されたデータをデコーディングするように構成される。デコーディングされたデータは、ホスト（Ｈｏｓｔ）に伝送することができる。
【００３０】
例示的に、不揮発性メモリ１１００は、メモリセルに接続された導電線を介して電流を流し、メモリセルに格納されたデータ（例えば、論理状態）を変換してメモリセルにデータを格納することができる。すなわち、プログラムの時に、格納されたデータが変わるメモリセルの数は、メモリシステム１０００の消費電力を決める重要な要因になり得る。
データエンコーディング及びデコーディング部１２６０は、プログラム時の消費電力を節減するようにデータをエンコーディングすることができる。例えば、データエンコーディング及びデコーディング部１２６０は、プログラムの時にメモリセルに格納されるデータとメモリセルに格納されたデータとの差が最小化するようにデータをエンコーディングすることができる。データエンコーディング及びデコーディング部１２６０の動作は、以下の図面を参照してより詳細に説明する。
【００３１】
図１において、データエンコーディング及びデコーディング部１２６０は、コントローラ１２００の構成要素として示されている。しかし、本発明の技術的思想はこの実施形態に限定されない。データエンコーディング及びデコーディング部１２６０を不揮発性メモリ１１００に含むことも本発明の技術的思想の範疇に属し、本発明の権利範囲に属する。以下、説明の簡略化のため、データエンコーディング及びデコーディング部１２６０がコントローラ１２００に属する実施形態を説明するが、本発明の技術的思想はこれに限定されない。
【００３２】
メモリシステム１０００は、ＰＣカード（ＰＣＭＣＩＡ、ｐｅｒｓｏｎａｌ  ｃｏｍｐｕｔｅｒ  ｍｅｍｏｒｙ  ｃａｒｄ  ｉｎｔｅｒｎａｔｉｏｎａｌ  ａｓｓｏｃｉａｔｉｏｎ）、コンパクトフラッシュ（登録商標）カード（ＣＦ）、スマートメディアカード（ＳＭ、ＳＭＣ、メモリスティック、マルチメディアカード（ＭＭＣ、ＲＳ−ＭＭＣ、ＭＭＣｍｉｃｒｏ）、ＳＤカード（ＳＤ、ｍｉｎｉＳＤ、ｍｉｃｒｏＳＤ、ＳＤＨＣ）、ユニバーサルフラッシュ記憶装置（ＵＦＳ）などのメモリカードとして形成することができる。
メモリシステム１０００は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）として形成することができる。メモリシステム１０００は、コンピュータシステムのメインメモリとして形成することができる。
【００３３】
図２は、本発明の実施形態に係る不揮発性メモリ１１００を示すブロック図である。図１及び図２を参照すると、不揮発性メモリ１１００は、メモリセルアレイ１１１０と、行デコーダ１１２０と、列デコーダ１１３０と、アドレスデコーダ１１４０と、データ入出力回路１１５０と、電圧生成器及び制御ロジック１１６０とを含んでいる。
メモリセルアレイ１１１０は、複数のメモリセルを含んでいる。複数のメモリセルは、複数の不揮発性メモリセルとすることができる。複数のメモリセルは、ワードラインＷＬを介して行デコーダ１１２０に接続し、ビットラインＢＬを介して列デコーダ１１３０に接続している。例示的に、メモリセルアレイ１１１０の複数のメモリセルの行はワードラインＷＬに接続し、複数のメモリセルの列はビットラインＢＬに接続することができる。
【００３４】
行デコーダ１１２０は、ワードラインＷＬを介してメモリセルアレイ１１１０と接続している。行デコーダ１１２０は、電圧生成器及び制御ロジック１１６０の制御によって動作することができる。行デコーダ１１２０は、アドレスデコーダ１１４０からデコーディングされた行アドレスＤＲＡを受信し、デコーディングされた行アドレスＤＲＡによってワードラインＷＬを各々選択または非選択することができる。行デコーダ１１２０は、電圧生成器及び制御ロジック１１６０から提供される電圧を、選択された少なくとも一つのワードライン及び非選択ワードラインに各々供給することができる。
【００３５】
列デコーダ１１３０は、ビットラインＢＬを介してメモリセルアレイ１１１０と接続している。列デコーダ１１２０は、電圧生成器及び制御ロジック１１６０の制御によって動作することができる。列デコーダ１１２０は、アドレスデコーダ１１４０からデコーディングされた列アドレスＤＣＡを受信し、デコーディングされた列アドレスＤＣＡに応じてビットラインＢＬを各々選択または非選択することができる。列デコーダ１１３０は、電圧生成器及び制御ロジック１１６０から提供される電圧をビットラインに各々供給することができる。
【００３６】
例示的に、列デコーダ１１３０は、データラインＤＬを介してデータを受信し、受信されたデータを格納することができる。列デコーダ１１３０は、格納されたデータに基づいて、ビットラインＢＬを各々選択または非選択することができる。列デコーダ１１３０は、ビットラインＢＬの電圧または電流を感知し、感知結果を格納することができる。感知結果は、メモリセルアレイ１１１０から読み出されたデータとすることができる。読み出されたデータは、データラインＤＬを介して出力することができる。
【００３７】
アドレスデコーダ１１４０は、電圧生成器及び制御ロジック１１６０の制御によって動作する。アドレスデコーダ１１４０は、コントローラ１２００からアドレスＡＤＤＲを受信し、受信されたアドレスを格納することができる。アドレスデコーダ１１４０は、格納されたアドレスのうち行アドレスをデコーディングし、デコーディングされた行アドレスＤＲＡを行デコーダ１１２０に伝送することができる。アドレスデコーダ１１４０は、格納されたアドレスのうち列アドレスをデコーディングし、デコーディングされた列アドレスＤＣＡを列デコーダ１１３０に伝送することができる。
【００３８】
データ入出力回路１１５０は、電圧生成器及び制御ロジック１１６０の制御によって動作する。データ入出力回路１１５０は、コントローラ１２００から伝送されるデータを格納し、格納されたデータをデータラインＤＬに出力することができる。データ入出力回路１１５０は、データラインＤＬを介して伝送されるデータを格納し、格納されたデータをコントローラ１２００に出力することができる。
【００３９】
電圧生成器及び制御ロジック１１６０は、コントローラ１２００から制御信号ＣＴＲＬ及びコマンドＣＭＤを受信するように構成される。電圧生成器及び制御ロジック１１６０は、受信された制御信号ＣＴＲＬ及びコマンドＣＭＤに応答して、不揮発性メモリ１１００のすべての動作を制御するように構成される。例えば、電圧生成器及び制御ロジック１１６０は不揮発性メモリ１１００の構成要素に電圧を供給し、これらの動作タイミングを制御することができる。
【００４０】
図３Ａ〜図３Ｃは、本発明の実施形態に係るメモリセルアレイを示す回路図である。図３Ａを参照すると、メモリセルアレイ１１１０ａは、ワードラインＷｌ１〜ＷＬｎとビットラインＢＬ１〜ＢＬｍとに接続されたメモリセルＭＣを含んでいる。メモリセルＭＣの各々は、一つの可変抵抗素子を含むことができる。可変抵抗素子は、温度、磁場の配列、電圧または電流の条件に応じて変わる抵抗値を有することができる。メモリセルＭＣは、ワードラインＷｌ１〜ＷＬｎとビットラインＢＬ１〜ＢＬｍの電圧に応じて選択または非選択することができる。
【００４１】
図３Ｂを参照すると、メモリセルアレイ１１１０ｂは、ワードラインＷｌ１〜ＷＬｎとビットラインＢＬ１〜ＢＬｎに接続されたメモリセルＭＣを含んでいる。メモリセルＭＣの各々は、一つの可変抵抗素子と１つのダイオードとを含むことができる。可変抵抗素子は、温度、磁場の配列、電圧または電流の条件に応じて可変する抵抗値を有することができる。ダイオードは順方向バイアス時に電流が流れ、逆方向バイアス時には電流が流れない。ダイオードは、ワードラインＷｌ１〜ＷＬｎとビットラインＢＬ１〜ＢＬｍの電圧に応じてメモリセルＭＣを選択する選択度を向上させることができる。
例示的に、不揮発性メモリ１１００のプログラムは、読み出し、及び消去スキームによって、ダイオードの位置と方向は変更可能である。
【００４２】
図３Ｃを参照すると、メモリセルアレイ１１１０ｃは、ワードラインＷｌ１〜ＷＬｎ、ソースラインＳＬ１〜ＳＬｎ、ビットラインＢＬ１〜ＢＬｍに接続されたメモリセルＭＣを含んでいる。メモリセルＭＣの各々は、一つの可変抵抗素子と１つのトランジスタとを含むことができる。可変抵抗素子は、温度、磁場の配列、電圧または電流の条件に応じて変わる抵抗値を有することができる。トランジスタは、ワードラインＷＬ１〜ＷＬｎの電圧によってターンオンまたはターンオフすることができる。トランジスタは、メモリセルＭＣを選択する選択度を向上させることができる。
例示的に、不揮発性メモリ１１００のプログラム、読み出し、消去スキームによって、トランジスタの位置や接続関係は変更可能である。ソースラインＳＬ１〜ＳＬｎは、行デコーダ１１２０または列デコーダ１１３０に接続することができる。
【００４３】
図４は、本発明の実施形態に係るコントローラ１２００を示すブロック図である。図１及び図４を参照すると、コントローラ１２００は、バス１２１０と、プロセッサ１２２０と、ランダムアクセスメモリ１２３０と、ホストインターフェース１２４０と、データエンコーディング及びデコーディング部１２６０と、メモリインターフェース１２５０とを含んでいる。
バス１２１０は、コントローラ１２００の構成要素の間のチャネルを提供するよう構成される。
プロセッサ１２２０は、コントローラ１２００の構成要素を制御するように構成される。
ランダムアクセスメモリ１２３０は、プロセッサ１２２０またはコントローラ１２００の動作メモリとして使用することができる。ランダムアクセスメモリ１２３０は、ＤＲＡＭ、ＳＲＡＭ、ＦＲＡＭ、ＭＲＡＭ、ＰＲＡＭ、ＲＲＡＭなどを含むことができる。
【００４４】
ホストインターフェース１２４０は、プロセッサ１２２０の制御に応じてホストと通信するように構成される。ホストインターフェース１２４０は、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）、ＭＭＣ（ｍｕｌｔｉｍｅｄｉａ  ｃａｒｄ）、ＰＣＩ（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔｉｏｎ）、ＰＣＩ−Ｅ（ＰＣＩ−ｅｘｐｒｅｓｓ）、ＡＴＡ（Ａｄｖａｎｃｅｄ  Ｔｅｃｈｎｏｌｏｇｙ  Ａｔｔａｃｈｍｅｎｔ）、Ｓｅｒｉａｌ−ＡＴＡ、Ｐａｒａｌｌｅｌ−ＡＴＡ、ＳＣＳＩ（ｓｍａｌｌ  ｃｏｍｐｕｔｅｒ  ｓｍａｌｌ  ｉｎｔｅｒｆａｃｅ）、ＥＳＤＩ（ｅｎｈａｎｃｅｄ  ｓｍａｌｌ  ｄｉｓｋ  ｉｎｔｅｒｆａｃｅ）、ＩＤＥ（Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ）、ファイヤワイヤ（Ｆｉｒｅｗｉｒｅ）のうちの少なくとも一つの通信規格によってホストと通信するように構成することができる。
メモリインターフェース１２５０は不揮発性メモリ１１００と通信するように構成される。
【００４５】
データエンコーディング及びデコーディング部１２６０は、データエンコーディング及びデコーディングを実行するように構成される。例えば、データエンコーディング及びデコーディング部１２６０は、ホストからホストインターフェース１２４０を介して受信され、ランダムアクセスメモリ１２３０に格納されたデータをエンコーディングすることができる。エンコーディングされたデータは、ランダムアクセスメモリ１２３０に格納された後、メモリインターフェース１２５０を介して不揮発性メモリ１１００に伝送することができる。データエンコーディング及びデコーディング部１２６０は不揮発性メモリ１１００からメモリインターフェース１２５０を介して受信され、ランダムアクセスメモリ１２３０に格納されたデータをデコーディングすることができる。デコーディングされたデータは、ランダムアクセスメモリ１２３０に格納された後、ホストインターフェース１２４０を介してホストに伝送することができる。
【００４６】
データエンコーディング及びデコーディング部１２６０は不揮発性メモリ１１００のメモリセルのデータの変化が減少するようにデータをエンコーディングすることができる。データエンコーディング及びデコーディング部１２６０は、エンコーディングに対する情報を生成することができる。生成された情報は、エンコーディングされたデータと共に不揮発性メモリ１１００に伝送することができる。不揮発性メモリ１１００からデータと共にエンコーディングに対する情報を受信することができる。データエンコーディング及びデコーディング部１２６０は、受信された情報に基づいて、受信されたデータをデコーディングすることができる。
【００４７】
以下、データエンコーディング及びデコーディング部１２６０が生成するエンコーディングに対する情報をフラグデータ（ｆｌａｇ  ｄａｔａ）という。
例示的に、データエンコーディング及びデコーディング部１２６０は、プロセッサ１２２０と分離した別途の構成要素として示されている。しかし、データエンコーディング及びデコーディング部１２６０は、プロセッサ１２２０の構成要素として実現することができる。データエンコーディング及びデコーディング部１２６０は、プロセッサ１２２０で駆動されるソフトウェアとして実現することができる。本発明の技術的思想から逸脱せず、データエンコーディング及びデコーディング部１２６０は、コントローラ１２００内で様々な形態で実現可能である。
【００４８】
図５は、本発明の第１実施形態に係るプログラム方法を示すフローチャートである。図１、図４、図５を参照すると、Ｓ１１０段階において、ホストからプログラムデータが受信される。コントローラ１２００は、ホストからホストインターフェース１２４０を介してプログラムデータを受信し、これをランダムアクセスメモリ１２３０に格納することができる。
【００４９】
Ｓ１２０段階において、不揮発性メモリ１１００から受信されたプログラムデータに対応するデータが読み出される。例えば、コントローラ１２００は、受信されたプログラムデータがプログラムされる不揮発性メモリ１１００の格納領域からデータを読み出すことができる。コントローラ１２００は、プログラムデータと共に受信されるアドレスを用いて、読み出しを実行するように不揮発性メモリ１１００を制御することができる。読み出されたデータは、メモリインターフェース１２５０を介して受信され、ランダムアクセスメモリ１２３０に格納することができる。
【００５０】
Ｓ１３０段階において、プログラムデータ及び読み出されたデータに基づいて、プログラムデータがエンコーディングされ、エンコーディング情報を含むフラグデータが生成される。データエンコーディング及びデコーディング部１２６０は、ランダムアクセスメモリ１２３０に格納されたプログラムデータと読み出されたデータとを比較することができる。比較の結果によって、データエンコーディング及びデコーディング部１２６０は、ランダムアクセスメモリ１２３０に格納されたプログラムデータをエンコーディングすることができる。データエンコーディング及びデコーディング部１２６０はエンコーディングを実行して、少なくとも一つの候補データを生成し、生成された候補データとプログラムデータとを比較することができる。データエンコーディング及びデコーディング部１２６０は、候補データ及びプログラムデータのうちの一つをエンコーディングされたデータとして選択することができる。
【００５１】
エンコーディングされたデータは、ランダムアクセスメモリ１２３０に格納することができる。データエンコーディング及びデコーディング部１２６０は、プログラムデータをエンコーディングされたデータとして選択する場合、エンコーディングされたデータがランダムアクセスメモリ１２３０に格納される動作は省略可能である。
エンコーディングされたデータが選択されれば、データエンコーディング及びデコーディング部１２６０はエンコーディング情報を含むフラグデータを生成することができる。フラグデータは、候補データ及びプログラムデータのうちのいずれかデータがエンコーディングされたデータとして選択されたかに対する情報を含むことができる。フラグデータは、ランダムアクセスメモリ１２３０に格納することができる。
【００５２】
Ｓ１４０段階において、エンコーディングされたデータ及びフラグデータが不揮発性メモリ１１００にプログラムされる。ランダムアクセスメモリ１２３０に格納されたエンコーディングされたデータ及びフラグデータは、メモリインターフェース１２５０を介して不揮発性メモリ１１００に伝送することができる。不揮発性メモリ１１００は、コントローラ１２００の制御によって、受信されたデータを読み出されたデータが格納された格納領域にプログラムすることができる。
【００５３】
図６Ａは、本発明の第１実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図６Ａを参照すると、Ｓ２１０段階において、プログラムデータが候補データとして選択される。
Ｓ２２０段階において、読み出されたデータを候補データと比較する。例えば、読み出されたデータと候補データとの間の距離を比較することができる。距離は読み出されたデータと、読み出されたデータと比較されるデータとの間で互いに異なる値を有するビットの数であり得る。
【００５４】
Ｓ２３０段階において、距離が基準値未満であるか否かを判断する。例えば、読み出されたデータと候補データとの間の距離が基準値未満であるか否かを判断する。距離が基準値未満であれば、Ｓ２４０段階において、比較された候補データがエンコーディングされたデータとして選択され、Ｓ２８０段階が実行される。距離が基準値未満でなければ、Ｓ２５０段階が実行される。
【００５５】
Ｓ２５０段階において、最大ループに到達したか否かを判別する。最大ループ数は、データエンコーディング及びデコーディング部１２６０に設定することができる。最大ループ数は、コントローラ１２００に予め格納することができる。最大ループ数は、コントローラ１２００のモードレジスタを通じて設定することができる。
最大ループに到達しない場合、Ｓ２６０段階で、以前の候補データを１ビットシフトして、新しい候補データを生成する。その後、Ｓ２２０段階が再び実行される。
最大ループに到達した場合は、Ｓ２７０段階で、読み出されたデータと最短距離を有するデータがエンコーディングされたデータとして選択される。
【００５６】
Ｓ２８０段階において、選択されたデータを示すフラグデータが生成される。例えば、フラグデータは、候補データ及びプログラムデータのうちエンコーディングされたデータとして選択されたデータに対する情報を含むことができる。例えば、フラグデータは、選択されたデータがプログラムデータからシフトされたビット数に対する情報を含むことができる。
【００５７】
図６Ｂは、図６Ａのエンコーディング方法の応用例を示すフローチャートである。図６Ｂを参照すると、Ｓ２６０段階において、読み出されたデータとプログラムデータとの間の距離を計算する。
Ｓ２７０段階において、プログラムデータと読み出されたデータとの間の距離を基準値と比較する。プログラムデータと読み出されたデータとの間の距離が基準値より大きくなければ、Ｓ２８０段階において、プログラムデータがエンコーディングされたデータとして選択される。プログラムデータと読み出されたデータとの間の距離が基準値より大きければ、Ｓ２９０段階において、図６Ａを参照して説明したエンコーディング方法が実行される。
すなわち、図６Ａのエンコーディング方法は、プログラムデータと読み出されたデータとの間の距離が基準値より大きい場合に実行することができる。
【００５８】
図７Ａは、図６のエンコーディング方法を適用した例を示す。例示的に、最大ループが３の例を図７Ａに示す。図７Ａから、差（ｄｉｆｆｅｒｅｎｃｅ）は、読み出されたデータとプログラムデータと候補データとの間の差を示す。例えば、特定の位置の読み出されたデータのビットとプログラムデータ又は候補データのビットが同一のビットである場合、該当位置の差ビットは‘０’とすることができる。特定の位置の読み出されたデータのビットとプログラムデータ又は候補データのビットが互いに異なるビットである場合、該当位置の差ビットは‘１’とすることができる。
【００５９】
図１及び図７Ａを参照すると、プログラムデータが１ビットシフトされて、第１候補データが生成される。例えば、プログラムデータは左側にシフトすることができる。プログラムデータが２ビットシフトされて（または、第１候補データが１ビットシフトされて）第２候補データが生成される。プログラムデータが３ビットシフトされて（または、第２候補データが１ビットシフトされて）、第３候補データが生成される。
【００６０】
プログラムデータと読み出されたデータとの間の距離は６である。プログラムデータがエンコーディングされたデータとして選択されたことを示すフラグデータは‘００’とすることができる。第１候補データと読み出されたデータとの間の距離は６である。第１候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘０１’とすることができる。第２候補データと読み出されたデータとの間の距離は４である。第２候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘１０’とすることができる。第３候補データと読み出されたデータとの間の距離は４である。第３候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘１１’とすることができる。
【００６１】
読み出されたデータと最短距離を有するデータ、すなわち第２及び第３候補データのうちの一つがエンコーディングされたデータとして選択され得る。第２候補データが選択されれば、フラグデータは‘１０’に生成することができる。第３候補データが選択されれば、フラグデータは‘１１’に生成することができる。
第２または第３候補データと読み出されたデータとの間の距離は、プログラムデータと読み出されたデータとの間の距離より小さい。プログラムデータが不揮発性メモリ１１００にプログラムされる時、６ビットが変わるようになる。すなわち、６つのメモリセルのデータを変換することができる。一方、第２または第３候補データが不揮発性メモリ１１００にプログラムされる時、４ビットが変わるようになる。すなわち、４つのメモリセルのデータを変換することができる。
【００６２】
データが変換するメモリセルの数が減少すると、プログラム時の消費電力が低減するようになる。したがって、本発明の実施形態によれば、メモリシステム１０００の消費電力が減少するようになる。消費電力が減少するようになれば、メモリシステム１０００が支援する電源容量を減少させることができる。したがって、メモリシステム１０００のサイズと複雑さを減少させることができる。
【００６３】
図７Ｂは、図６のエンコーディング方法を適用した他の例を示す。例示的に、最大ループが３の例を図７Ｂに示す。図７Ａと比較すると、読み出されたデータ、プログラムデータ、そして第１〜第３候補データはバイト単位で比較され、シフトされる。すなわち、本発明の実施形態に係るエンコーディング方式は、ビット単位だけではなく、バイト単位でも実行可能である。
【００６４】
図７Ｃは、２ビットのフラグデータを用いて、図６のエンコーディング方法を適用したシミュレーション結果を示す。図７Ｄは、４ビットのフラグデータを用いて、図６のエンコーディング方法を適用したシミュレーション結果を示す。例示的に、図７Ｃ及び図７Ｄは、ランダムデータパターンに基づいたシミュレーション結果を示す。
図１、図７Ｃ及び図７Ｄを参照すると、循環シフトエンコーディングが実行されるプログラムデータの長さ（Ｎ）に応じて、プログラムデータがプログラムされる時と、エンコーディングされたデータがプログラムされる時に変更されるビットの数を各々示している。
図７Ｃと図７Ｄに示すように、プログラムデータが不揮発性メモリ１１００にプログラムされる時よりエンコーディングされたデータがプログラムされる時に、変換するビットの数が減少する。したがって、本発明の実施形態に係るエンコーディング方法（またはプログラム方法）が適用されれば、メモリシステム１０００の消費電力が減少するようになる。
【００６５】
図８は、本発明の第２実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図８に示したエンコーディング方法は、差分エンコーディングとすることができる。図８を参照すると、Ｓ３１０段階において、候補データの第１ビットがプログラムデータの第１ビットと同じように生成される。例えば、プログラムデータの第１ビットが‘０’であれば、候補データの第１ビットは‘０’に生成される。プログラムデータの第１ビットが‘１’であれば、候補データの第１ビットは‘１’に生成される。
【００６６】
Ｓ３２０段階において、プログラムデータの次のビットが選択される。
Ｓ３３０段階において、選択されたビットが前のビットと同一であるか否かが判別される。例えば、プログラムデータの選択されたビットが、プログラムデータの前のビットと同じビットであるか否かが判別される。プログラムデータの選択されたビットが‘１’であり、プログラムデータの前のビットが‘１’あれば、同じビットとして判別される。プログラムデータの選択されたビットが‘０’であり、プログラムデータの前のビットが‘０’であれば、同じビットとして判別される。プログラムデータの選択されたビットが‘１’であり、プログラムデータの前のビットが‘０’であれば、同一ではないビットとして判別される。プログラムデータの選択されたビットが‘０’であり、プログラムデータの前のビットが‘１’であれば、同一ではないビットとして判別される。
【００６７】
選択されたビットが同じビットとして判別されれば、Ｓ３４１段階において、候補データのビットがロジックロー（例えば、‘０’）に生成される。選択されたビットが同一ではないビットとして判別されれば、Ｓ３４３段階において、候補データのビットがロジックハイ（例えば、‘１’）として選択される。例えば、プログラムデータの選択されたビットの位置と同じ位置に存在する候補データのビットが生成することができる。
例示的に、選択されたビットが同じビットとして判断されれば、候補データのビットがロジックハイ（例えば、‘１’）に生成され、選択されたビットが同一ではないビットとして判断されれば、候補データのビットがロジックロー（例は、‘０’）として選択される。
【００６８】
Ｓ３５０段階において、選択されたビットが最後のビットであるか否かが判断される。例えば、プログラムデータの選択されたビットが、プログラムデータの最後のビットであるか否かを判別することができる。選択されたビットが最後のビットではなければ、Ｓ３２０の段階を再び実行する。
選択されたビットが最後のビットであれば、Ｓ３６０段階〜Ｓ３８０段階において、エンコーディングされたデータが選択され、フラグデータが生成される。Ｓ３６０段階〜Ｓ３８０の段階は、図６のＳ２３０段階〜Ｓ２５０段階と同じ方法で実行される。したがって、Ｓ３６０段階〜Ｓ３８０段階の詳細な説明は省略する。
【００６９】
図９は、図８のエンコーディング方法を適用した例を示す。図９を参照すると、プログラムデータの第１ビットが‘１’であるため、候補データの第１ビットは‘１’に生成される。プログラムデータの第２ビットは‘０’であり、第１ビットと同一ではない。したがって、候補データの第２ビットは‘１’に生成される。同様に、プログラムデータの連続する２つのビットが比較され、比較の結果によって候補データが生成される。
【００７０】
プログラムデータがエンコーディングされたデータとして選択したことを示すフラグデータは‘０’になることができる。候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘１’になることができる。
プログラムデータと読み出されたデータとの間の距離は６である。候補データと読み出したデータとの間の距離は１である。したがって、候補データが選択され、フラグデータが‘１’に生成される。
【００７１】
図１０は、本発明の第３実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図１０に示したエンコーディング方法は、バイナリマスクエンコーディングである。図１及び図１０を参照すると、Ｓ４１０段階において、予め設定されたデータが備えられる。予め設定されたデータは、コントローラ１２００に予め格納することができる。予め設定されたデータは、コントローラ１０００のモードレジスタを通じて設定することができる。コントローラ１２００は、複数のデータを予め格納し、予め格納された複数のデータのうちの一つを予め設定されたデータとして選択することができる。予め設定されたデータの長さは、プログラムデータの長さと同一であり得る。
【００７２】
Ｓ４２０段階において、プログラムデータと予め設定されたデータの論理演算を実行して、候補データを生成する。例えば、プログラムデータの予め設定されたデータの排他的論理積を実行し、排他的論理積の実行結果を候補データとして生成することができる。
Ｓ４３０段階〜Ｓ４５０段階において、エンコーディングされたデータが選択され、フラグデータが生成する。Ｓ４３０段階〜Ｓ４５０の段階は、図６のＳ２３０段階〜Ｓ２５０段階と同様の方法で実行される。したがって、Ｓ４３０段階〜Ｓ４５０段階の詳細な説明は省略する。
【００７３】
図１１は、図１０のエンコーディング方法を適用した例を示す。図１１を参照すると、プログラムデータと予め設定されたデータの排他的論理積の結果が候補データとして生成される。プログラムデータがエンコーディングされたデータとして選択したことを示すフラグデータは‘０’とすることができる。候補データがエンコーディングされたデータを選択したことを示すフラグデータは‘１’とすることができる。
プログラムデータと読み出されたデータとの間の距離は６である。候補データと読み出されたデータとの間の距離は４である。したがって、候補データがエンコーディングされたデータとして選択され、フラグデータが‘１’に生成される。
例示的に、予め設定されたデータは、複数のデータセットのうちで選択することができる。このとき、フラグデータは複数のデータセットのうち、いずれのデータが予め設定されたデータとして選択されたかに対する情報をさらに含むことができる。
【００７４】
図１２は、本発明の第４実施形態によってエンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図１２に示したエンコーディング方法は、ビット反転エンコーディングである。図１２を参照すると、Ｓ５１０段階において、プログラムデータを反転して候補データが生成される。
Ｓ５２０段階〜Ｓ５４０段階において、エンコーディングされたデータが選択され、フラグデータが生成される。Ｓ５２０段階〜Ｓ５４０の段階は、図６のＳ２３０段階〜Ｓ２５０段階と同じ方法で実行される。したがって、Ｓ５２０段階〜Ｓ５４０段階の詳細な説明は省略する。
【００７５】
図１３Ａは、図１２のエンコーディング方法を適用した第１例を示す。図１３Ａを参照すると、プログラムデータを反転して候補データが生成される。プログラムデータがエンコーディングされたデータとして選択されたことを示すフラグデータは‘０’とすることができる。候補データがエンコーディングされたデータとして選択されたことを示すフラグデータは‘１’とすることができる。
プログラムデータと読み出されたデータとの間の距離は６である。候補データと読み出されたデータとの間の距離は２である。したがって、候補データがエンコーディングされたデータとして選択され、フラグデータが‘１’に生成される。
【００７６】
図１３Ｂは、図１２のエンコーディング方法の変形例を示す。例示的に、プログラムデータが複数の部分に分割され、分割された部分の各々が選択的に反転する例を図１３Ｂに示した。例示的に、プログラムデータは、８ビットであり、プログラムデータは二つの部分に分けることができる。
プログラムデータの１番目の部分が反転して第１候補データを生成することができる。プログラムデータの２番目の部分が反転して第２候補データを生成することができる。プログラムデータの１番目と２番目の部分が反転して第３候補データを生成することができる。
【００７７】
プログラムデータが選択されたこと示すフラグデータは‘００’とすることができる。第１候補データが選択されたこと示すフラグデータは‘０１’とすることができる。第２候補データが選択されたこと示すフラグデータは‘１０’とすることができる。第３候補データが選択されたこと示すフラグデータは‘１１’とすることができる。
プログラムデータと読み出されたデータとの間の距離は６である。第１候補データと読み出されたデータとの間の距離は６である。第２候補データと読み出されたデータとの間の距離は２である。第３候補データと読み出されたデータとの間の距離は２である。したがって、第２及び第３候補データのうちの一つがエンコーディングされたデータとして選択され、フラグデータは、‘１０’又は‘１１’に生成することができる。
【００７８】
図１４は、本発明の第２実施形態に係るプログラム方法を示すフローチャートである。図１及び図１４を参照すると、Ｓ６１０段階において、プログラムデータが受信され、Ｓ６２０段階において、プログラムデータに対応するデータが読み出される。Ｓ６１０段階とＳ６２０段階は、図５のＳ１１０段階とＳ１２０段階と同じ方法で実行することができる。
Ｓ６３０段階において、複数のエンコーディングスキームのうちの一つのエンコーディングスキームが選択され、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされ、エンコーディング情報を含むフラグデータが生成される。
【００７９】
Ｓ６４０段階において、エンコーディングされたデータ及びフラグデータが不揮発性メモリ１１００にプログラムされる。
例示的に、複数のエンコーディングスキームは、データエンコーディング及びデコーディング部１２６０に格納され、エンコーディングスキームの選択は、データエンコーディング及びデコーディング部１２６０によって行うことができる。
【００８０】
図１５は、本発明の第１実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図１５を参照すると、Ｓ７１０段階において、複数のエンコーディングスキームの候補データと読み出されたデータとの間の距離が予測される。距離の予測は距離に影響を及ぼす要素（以下、距離の要素という）を計算することによって行うことができる。距離の予測は、直接的に予想距離を計算する動作を含むことができる。距離の予測は、距離の要素を計算する動作を含み得る。距離の予測は、本発明の技術的思想を表現する一例であり、本発明の技術的思想は、直接距離を予測するものに限定されない。
【００８１】
Ｓ７２０段階において、予測の結果に基づいて、複数のエンコーディングスキームのうちの一つのエンコーディングスキームが選択される。例えば、読み出されたデータと最短距離を有する候補データとを生成することによって予測されるエンコーディングスキームを選択することができる。
Ｓ７３０段階において、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされる。
Ｓ７４０段階において、選択情報及びエンコーディング情報を含むフラグデータが生成される。選択情報は、複数のエンコーディングスキームのうちのいずれのエンコーディングスキームが選択されたかに対する情報を含むことができる。
【００８２】
図１６は、候補データの読み出されたデータからの距離を予測し、予測の結果に基づいてエンコーディングスキームを選択する一例を示すフローチャートである。図１及び図１６を参照すると、Ｓ７１１段階において、読み出されたデータとプログラムデータとの間の変換ビット及び同じビットがカウントされる。変換ビットは、読み出されたデータ及びプログラムデータの同じ位置のビットが互いに異なるビットを示す。同じビットは、読み出されたデータ及びプログラムデータの同じ位置のビットが同じビットを示す。この段階は、候補データの読み出されたデータからの距離を予測する動作（図１５のＳ７１０段階）に対応することができる。
【００８３】
例示的に、読み出されたデータとプログラムデータに基づいて計算された変換ビット及び同じビットの差が閾値より小さい場合、循環シフトエンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離がビット反転エンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離より小さいと予測することができる。変換ビット及び同じビットの差が閾値より小さくなければ、循環シフトエンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離がビット反転エンコーディングスキームによって生成される候補データと読み出されたデータとの間の距離より大きいと予測することができる。
【００８４】
Ｓ７２１段階において、変換ビット数と同じビット数の差が閾値より小さいか否かが判別される。差が閾値より小さければ、Ｓ７２３段階において、循環シフトエンコーディングスキームを選択することができる。差が閾値より小さくなければ、Ｓ７２５段階において、ビット反転エンコーディングスキームを選択することができる。
閾値は、コントローラ１２００に予め格納された値であり得る。閾値は、コントローラ１２００のモードレジスタを通じて設定される値であり得る。閾値は、プログラムデータの全体の長さの半分として設定することができる。
Ｓ７２１段階〜Ｓ７２５段階は、予測の結果によってエンコーディングスキームを選択する動作（図１５のＳ７２０段階）に対応することができる。
【００８５】
例示的に、循環シフトエンコーディングスキームとビット反転エンコーディングスキームとを含むデータエンコーディング及びデコーディング部１２６０が、変換ビット及び同じビットの数を利用してエンコーディングスキームを選択する例が説明された。しかし、候補データの読み出されたデータからの距離を予測し、予測の結果によってエンコーディングスキームを選択する方法は、図１６を参照して説明した例に限定されない。
【００８６】
データエンコーディング及びデコーディング部１２６０は、循環シフトエンコーディングスキーム、差分エンコーディングスキーム、バイナリマスクエンコーディングスキーム、ビット反転エンコーディングスキームなどを含む様々なエンコーディングスキームのうちで、少なくとも二つのエンコーディングスキームを含むことができる。データエンコーディング及びデコーディング部１２６０は、変換ビット及び同じビットの数、プログラムデータのビットが遷移する回数、プログラムデータと読み出されたデータの相互相関図、バイナリマスクエンコーディングのための予め設定されたデータとプログラムデータの相互相関図、プログラムデータの‘１’又は‘０’の数などを含む様々な距離の要素の計算結果によってエンコーディングスキームを選択することができる。
【００８７】
図１７は、本発明の第２実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図１７を参照すると、Ｓ８１０段階及びＳ８２０段階において、予測の結果によって複数のエンコーディングスキームのうちの一つのエンコーディングスキームが選択される。Ｓ８１０段階とＳ８２０の段階は、図１５のＳ７１０段階及びＳ７２０段階と同じ方法で実行することができる。
【００８８】
Ｓ８３０段階において、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされる。
Ｓ８４０段階において、エンコーディングされたデータと読み出されたデータとの間の距離が閾値より小さいか否かが判別される。エンコーディングされたデータと読み出されたデータとの間の距離が閾値より大きい場合は、Ｓ８５０段階において、複数のエンコーディングスキームのうち、次のエンコーディングスキームが選択される。例えば、選択されたエンコーディングスキームの次に近い距離を有する候補データを生成すると予測されるエンコーディングスキームを選択することができる。その後、Ｓ８３０の段階が再び実行される。
【００８９】
エンコーディングされたデータと読み出されたデータとの間の距離が閾値より小さければ、Ｓ８６０段階において、選択情報及びエンコーディング情報を含むフラグ情報が生成される。
すなわち、予測の結果によってエンコーディングスキームが選択されても、選択されたエンコーディングスキームのエンコーディング結果が特定の条件（例えば、閾値）を満足しなければ、他のエンコーディングスキームを選択することができる。
例示的に、閾値は、プログラムのデータと読み出されたデータとの間の距離に対する割合として設定することができる。閾値は、プログラムデータの全体のビットの数に対する割合として設定することができる。
【００９０】
図１８は、本発明の一実施形態によってエンコーディングスキームを選択し、エンコーディングを実行し、フラグデータを生成する方法を示すフローチャートである。図１８を参照すると、Ｓ９１０段階において、複数のエンコーディングスキームのうちで、一番目のエンコーディングスキームが選択される。
Ｓ９２０段階において、選択されたエンコーディングスキームを用いて、プログラムデータをエンコーディングして、候補データが生成される。
【００９１】
Ｓ９３０段階において、距離が基準値未満であるか否かが判断される。例えば、読み出されたデータと候補データとの間の距離が基準値未満であるか否かが判断される。距離が基準値未満であれば、Ｓ９４０段階において、比較された候補データがエンコーディングされたデータとして選択され、Ｓ９８０段階が実行される。距離が基準値未満でなければ、Ｓ９５０段階が実行される。
Ｓ９３０段階において、選択されたエンコーディングスキームが最後のエンコーディングスキームであるか否かが判断される。選択されたエンコーディングスキームが最後のエンコーディングスキームでなければ、Ｓ９６０段階において、複数のエンコーディングスキームのうち、次のエンコーディングスキームが選択され、Ｓ９２０の段階が再び実行される。選択されたエンコーディングスキームが最後のエンコーディングスキームであれば、Ｓ９７０段階が実行される。
【００９２】
Ｓ９７０段階において、読み出されたデータと最短距離を有するデータがエンコーディングされたデータとして選択される。
Ｓ９８０段階において、選択情報及びエンコーディング情報を含むフラグデータが生成される。
すなわち、複数のエンコーディングスキームを利用してプログラムデータが順にエンコーディングされ、エンコーディング結果のうち最短距離を有するデータがエンコーディングされたデータとして選択される。
【００９３】
図１９は、本発明の一実施形態に係るプログラム方法を示すフローチャートである。図１及び図１９を参照すると、Ｓ１０１０段階において、プログラムデータが受信され、Ｓ１０２０段階において、プログラムデータに対応するデータが不揮発性メモリ１１００から読み出される。Ｓ１０１０段階及びＳ１０２０段階は、図５のＳ１１０段階とＳ１２０段階と同じ方法で実行することができる。
Ｓ１０３０段階において、複数のエンコーディングスキームのうち二つ以上のエンコーディングスキームが選択され、選択されたエンコーディングスキームを用いて、プログラムデータがエンコーディングされ、そしてエンコーディング情報及び選択情報を含むフラグデータが生成される。
【００９４】
例示的に、ビット反転エンコーディングスキーム及び循環シフトエンコーディングスキームを選択することができる。この時、プログラムデータは、まず、ビット反転エンコーディングスキームによって１次エンコーディングすることができる。その後、１次エンコーディングされたデータは、循環シフトエンコーディングスキームによって二次エンコーディングすることができる。ビット反転エンコーディングスキーム及び循環シフトエンコーディングスキームの例をあげて実施形態を説明した。しかし、この実施形態は、ビット反転エンコーディングスキーム及び循環シフトエンコーディングスキームに限定されない。
Ｓ１０４０段階において、エンコーディングされたデータ及びフラグデータが不揮発性メモリ１１００にプログラムされる。
【００９５】
例示的に、データエンコーディング及びデコーディング部１２６０は、二つ以上のエンコーディングスキーム及びこれらの組み合わせを選択することができる。図１５〜図１７を参照して説明したように、データエンコーディング及びデコーディング部１２６０は、予測の結果（または距離の要素の計算結果）によってエンコーディングスキームを選択することができる。図１８を参照して説明したように、データエンコーディング及びデコーディング部１２６０は、複数のエンコーディングスキームを順に選択及び組み合わせてエンコーディングを行い、エンコーディング結果によってエンコーディングされたデータを選択することができる。
【００９６】
例示的に、データエンコーディング及びデコーディング部１２６０が、循環シフトエンコーディングスキーム及びビット反転エンコーディングスキームを選択する時、プログラムデータ、ビット反転エンコーディングされたデータ、１ビット循環シフトエンコーディングされたデータ、２ビット循環シフトエンコーディングされたデータ、３ビット循環シフトエンコーディングされたデータ、１ビット循環シフト及びビット反転エンコーディングされたデータ、２ビット循環シフト及びビット反転エンコーディングされたデータ、３ビット循環シフト及びビット反転エンコーディングされたデータのうちの一つをエンコーディングされたデータとして選択ことができる。
【００９７】
図２０は、データエンコーディング及びデコーディング部１２６０がプログラムデータを分割してエンコーディングする例を示す。図２０を参照すると、データエンコーディング及びデコーディング部１２６０は、プログラムデータを複数の部分に分割してエンコーディングすることができる。
【００９８】
例えば、データエンコーディング及びデコーディング部１２６０は、プログラムデータの部分の各々に対して同じエンコーディングスキームを適用することができる。プログラムデータの部分の各々に対して、循環シフトエンコーディングスキーム、差分エンコーディングスキーム、バイナリマスクエンコーディングスキーム、ビット反転エンコーディングスキームのうちの一つのエンコーディングスキームを適用することができる。フラグデータは、選択されたエンコーディングスキームに対する情報を含むことができる。
【００９９】
例えば、データエンコーディング及びデコーディング部１２６０は、プログラムデータの部分の各々に対して独立してエンコーディングスキームを適用することができる。プログラムデータの第１部分は、１ビット循環シフトエンコーディングされ、第２部分は、３ビット循環シフトエンコーディングされ、第３部分は、元のデータに保持され、第４部分は、ビット反転エンコーディングされ得る。フラグデータは、プログラムデータの各部分に適用されたエンコーディングスキームに対する情報を含むことができる。
プログラムデータが分割されてエンコーディングされれば、エンコーディングされたデータと読み出されたデータとの間の距離を減少させることができる。
【０１００】
図２１は、本発明の第２実施形態に係るメモリシステム２０００を示すブロック図である。図２１を参照すると、メモリシステム２０００は不揮発性メモリ２１００とコントローラ２２００とを含んでいる。
不揮発性メモリ２１００は、複数の不揮発性メモリチップを含んでいる。複数の不揮発性メモリチップは、複数のグループに分割される。複数の不揮発性メモリチップの各グループは一つの共通チャネルを通じてコントローラ２２００と通信するように構成される。例示的に、複数の不揮発性メモリチップは、第１から第ｋチャンネルＣＨ１〜ＣＨｋを通じてコントローラ２２００と通信することを示している。
コントローラ２２００は、データエンコーディング及びデコーディング部２２６０を含んでいる。データエンコーディング及びデコーディング部２２６０は、図５〜図２０を参照して説明したエンコーディング及びフラグデータの生成を行うことができる。
【０１０１】
図２２は、本発明の実施形態に係るコンピューティングシステム３０００を示すブロック図である。図２２を参照すると、コンピューティングシステム３０００は、バス３１００と、プロセッサ３２００と、メモリシステム３３００と、モデム３４００と、ユーザインターフェース３５００とを含んでいる。
バス３１００は、コンピューティングシステム３０００の構成要素の間にチャンネルを提供する。
プロセッサ３２００は、コンピューティングシステム３０００のすべての動作を制御し、論理演算を実行することができる。
【０１０２】
メモリシステム３３００は、本発明の実施形態に係るメモリシステム１０００または２０００を含むことができる。メモリシステム３３００は、コンピューティングシステム３０００の動作メモリ又はストレージに提供することができる。動作メモリは、プロセッサ３２００が、コンピューティングシステム３０００を制御するために使用する格納領域とすることができる。ストレージは、コンピューティングシステム３０００が、データの長期的な格納のために使用する格納領域とすることができる。
【０１０３】
メモリシステム３３００が動作メモリとして提供される時、コンピューティングシステム３０００は、別々のストレージをさらに含むことができる。メモリシステム３３００がストレージとして提供される時、コンピューティングシステム３０００は、別々の動作メモリをさらに含むことができる。
モデム３４００は、外部と有線または無線通信を行うことができる。
【０１０４】
ユーザインターフェース３５００は、カメラ、キーボード、マウス、マイク、タッチパッド、タッチパネル、ボタン、センサなどのようなユーザ入力インターフェース、ディスプレイ、スピーカ、ランプ、モータなどのようなユーザ出力インターフェースを含むことができる。
コンピューティングシステム３０００は、スマートフォン、スマートパッドなどのようなモバイルマルチメディア装置、又はスマートテレビ、スマートモニタ、コンピュータ、ノートパソコンなどのようなマルチメディア装置を形成することができる。
【０１０５】
本発明の詳細な説明では具体的な実施形態について説明したが、本発明の範囲と技術的思想から逸脱しない範囲内で様々な変形が可能である。したがって、本発明の範囲は、上述の実施形態に限定されず、後述の特許請求の範囲だけではなく、この発明の特許請求の範囲と均等なものにより決められなければならない。
【符号の説明】
【０１０６】
１０００、２０００・・・メモリシステム
１１００、２１００・・・不揮発性メモリ
１２００、２２００・・・コントローラ
１２１０、３１００・・・バス
１２２０、３２００・・・プロセッサ
１２３０・・・ランダムアクセスメモリ
１２４０・・・ホストインターフェース
１２５０・・・メモリインターフェース
１２６０、２２６０・・・データエンコーディング及びデコーディング部
３０００・・・コンピューティングシステム
３３００・・・メモリシステム
３４００・・・モデム
３５００・・・ユーザインターフェース
【図１】
2014086127.tif 000003
【図２】
2014086127.tif 000004
【図３Ａ】
2014086127.tif 000005
【図３Ｂ】
2014086127.tif 000006
【図３Ｃ】
2014086127.tif 000007
【図４】
2014086127.tif 000008
【図５】
2014086127.tif 000009
【図６Ａ】
2014086127.tif 000010
【図６Ｂ】
2014086127.tif 000011
【図７Ａ】
2014086127.tif 000012
【図７Ｂ】
2014086127.tif 000013
【図７Ｃ】
2014086127.tif 000014
【図７Ｄ】
2014086127.tif 000015
【図８】
2014086127.tif 000016
【図９】
2014086127.tif 000017
【図１０】
2014086127.tif 000018
【図１１】
2014086127.tif 000019
【図１２】
2014086127.tif 000020
【図１３Ａ】
2014086127.tif 000021
【図１３Ｂ】
2014086127.tif 000022
【図１４】
2014086127.tif 000023
【図１５】
2014086127.tif 000024
【図１６】
2014086127.tif 000025
【図１７】
2014086127.tif 000026
【図１８】
2014086127.tif 000027
【図１９】
2014086127.tif 000028
【図２０】
2014086127.tif 000029
【図２１】
2014086127.tif 000030
【図２２】
2014086127.tif 000031